zoukankan      html  css  js  c++  java
  • 4月29 加载类以及面向对象的例题

    加载类:
    从现在养成的习惯以后写类名时:每个单词的首字母的大写,这样的命名方法叫做驼峰法,eg:Info.class.php 这样很快可以看清楚就是一个Info的类

    在php代码里面,/代表本地磁盘的根,(该文件所在的应聘)
    在html代码里面,/代表的是当前的站点目录(这里是www目录)

    加载类的方法:
    将文件名加载到页面,最好是在同一个路径下,参数是一个路径(能够找到类文件)

    include("Info.class.php"); //直接写文件名的加载
    include "Info.class.php";

    require_once("./Info.class.php"); //请求目标页面加载一次
    require_once "./Info.class.php";

    require("Info.class.php");
    require "Info.class.php";

    以上是加载的六种方法,每种都是可以的;但是也有稍稍的区别:include,如果有重大错误时加载不执行下面的任何内容,而require_once是可以执行的

    自动加载类:
    function __autoload($classname)//参数的名是类名
    {
    include("../".$classname.".class.php");在造对象的时候自动执行
    }
    自动加载要求的会比较苛刻,一般会不提倡使用的:
    要求:所有的类都要有同样的命名规则,所有的内容都要写在同一个文件名下,参数名必须要与类名统一


    当前目录:./或是直接写
    上级目录:../
    下级目录:目录名/
    根目录:/


    不在同一文件名下的加载:举例
    include "AppServ/www.test0429/Info.class.php";

    在html中加载一个同一文件夹下的图片
    <img src="/test0429/1.jpg"/>
    不在同一级的文件加载
    <img src="../2.jpg"/>

    针对面向过程和面相对象的例题应用求大圆与小圆面积之差

    面向过程

    <?php
               $r1=10;
               $r2=5;
               $mj=$r1*$r1*3.14 - $r2*$r2*3.14;
               echo  $mj;
    ?>


    面向对象

    首先是造类,写在不同页面需要加载

    <?php
           class Yuan
     {
        public $r;  //圆半径
        function __construct($r)  //构造方法来初始化半径
        {
                $this->r=$r;
        }
        function MianJi()
        {
            return $this->r*$this->r*3.14;  //返回圆的面积
        }
        function ZhouChang()
        {
            return $this->r*2*3.14;  //返回圆的周长
        }          
     }
      $y1=new Yuan(10);
      $y2=new Yuan(5);
      echo $y1->MianJi() - $y2->MianJi();  //利用方法求圆的面积之差
      echo $y1->ZhouChang() - $y2->ZhouChang();  //求周长之差
    
    ?>

    关于面向对象的练习题

    因为牵扯到劳动节放假回家,剩下的自己晓得了吧!自己动手做了以下感觉还好。

    显示数据

    表和类对应:表名是类名,列名是类里面的成员

    表里面的每一条数据对应是类实例化的对象

    <?php
      class Info
    {
        public $code;
        public $name;
        public $sex;
        public $nation;
        public $birthday;     
    }
    
    include("Info.class.php");//类的加载
       
       $attr=array();
       
       $info1 = new Info();
       $info1->code ="p001";
       $info1->name ="张三";
       $info1->sex ="男";
       $info1->nation ="汉族";
       $info1->birthday ="1988-2-13";
    //往里面追加元素
       array_push($attr,$info1);
    
    
      $info2 = new Info();
      $info2->code ="p002";
      $info2->name ="李四";
      $info2->sex ="女";
      $info2->nation ="汉族";
      $info2->birthday ="1989-2-3";
      array_push($attr,$info2);
      
      $info3 = new Info();
      $info3->code ="p003";
      $info3->name ="王五";
      $info3->sex ="男";
      $info3->nation ="回族";
      $info3->birthday ="1990-2-3";
      array_push($attr,$info3);
      
      echo "<table width='100%' border='1px' cellpadding='0' cellspacing='0'>";
      echo "<tr><td>Code</td><td>Name</td><td>Sex</td><td>Nation</td><td>Birthday</td></tr>";
     
     foreach($attr as $value)
      {
        echo "<tr><td>{$value->code}</td><td>{$value->name}</td><td>{$value->sex}</td><td>{$value->nation}</td><td>{$value->birthday}</td></tr>";
      }
      echo "</table>";
    ?>

    用for的遍历一样可以实现,相对来讲较为麻烦

    for($i=0;$i<count($attr);$i++)
    {
        echo "<tr><td>{$attr[$i]->code}</td><td>{$attr[$i]->name}</td><td>{$attr[$i]->sex}</td><td>{$attr[$i]->nation}</td><td>{$attr[$i]->birthday}</td></tr>";
    }

    另一个是关于游戏的题目:

    先做了一个类,类名是:game.class.php 代码部分如下:是一个纯的php页面所有后面可以不加 ?>

    <?php
    
    class Hero
    {
        public $blood;
        public $gongji;
        public $jingyan;
        public $level;
        public $name;
        public $money;
        public $jineng = array();
        
        //构造函数,对成员进行初始化
        function __construct($n)
        {
            $this->blood = 100;
            $this->gongji = 10;
            $this->jingyan = 0;
            $this->level = 1;
            $this->money = 100;
            $this->name = $n;                
        }
        //打怪函数
        function DaGuai()
        {
            //随机
            $sj = floor(rand(0,100));
            if($sj>30)
            {
                //获取经验
                $jy = floor(rand(0,40));//floor取整函数
                //将该英雄的经验增加
                $this->jingyan = $this->jingyan+$jy;
                //判断是否要升级
                if($this->jingyan>=50)
                {
                    $this->level +=1;
                    $this->jingyan = 0;//经验清零
                    $this->gongji +=5;
                    $this->blood +=20;    
                }    
                echo $this->name."杀死了一个怪物,获得了{$jy}点经验 ";
            }
            else
            {
                if($this->level==1)
                {
                        
                }
                else
                {
                    $this->level -=1;
                }
                echo "你被怪物打死了";    
            }
        }
        //查看英雄信息
        function Show()
        {
            echo "英雄的姓名:{$this->name}<br>";        
            echo "英雄的血量:{$this->blood}<br>";    
            echo "英雄的攻击:{$this->gongji}<br>";    
            echo "英雄的经验:{$this->jingyan}<br>";    
            echo "英雄的等级:{$this->level}<br>";    
            echo "技能为:";
            foreach($this->jineng as $v)
            {
                echo $v.",";
            }    
        }
        //学习技能
        function XueXi()
        {
            //花钱
            $hf = floor(rand(0,20));
            $n = floor(rand(0,5));
            //技能库里面选技能
            switch($n)
            {
                     case 0:
                     array_push($this->jineng,"冲锋");
                     break;    
                     case 1:
                     array_push($this->jineng,"嘲讽");
                     break;    
                     case 2:
                     array_push($this->jineng,"致死打击");
                     break;    
                     case 3:
                     array_push($this->jineng,"盾墙");
                     break;    
                     case 4:
                     array_push($this->jineng,"沉默");
                     break;                    
            }    
        }    
    }

     然后将做的类加载到一个新的文件名下game.php

    造一个新的对象然后进行游戏(实例化对象)

    <?php
    include("game.class.php");//加载类
    
    $hero = new Hero("张三");//创建英雄
    
    /*$hero->DaGuai();
    $hero->Show();
    
    $hero->DaGuai();
    $hero->Show();
    
    $hero->DaGuai();
    $hero->Show();
    
    $hero->DaGuai();
    $hero->Show();
    
    $hero->DaGuai();
    $hero->Show();
    */ $hero->XueXi(); $hero->Show(); $hero->XueXi(); $hero->Show(); ?>
  • 相关阅读:
    华为软件研发面试题1
    中兴软件面试题2
    中兴面试题1
    排 序 算 法
    hadoop集群环境的搭建
    各种排序算法的分析及java实现
    白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
    白话经典算法系列之三 希尔排序的实现
    白话经典算法系列之二 直接插入排序的三种实现
    白话经典算法系列之一 冒泡排序的三种实现
  • 原文地址:https://www.cnblogs.com/Duriyya/p/5459676.html
Copyright © 2011-2022 走看看