php面向对象编程笔记(1)

来源:互联网 发布:window10c语言编程软件 编辑:程序博客网 时间:2024/06/05 06:43
1.世间万物皆对象(可见,不可见)
2.对象的组成元素:
  (1)对象的数据模型,用来描述对象的数据  //描述对象的数据
  (2)对象的成员变量,或者对象的成员变量
  对象的行为:
  (1)对象的行为模型,用于描述对象能做什么
  (2)又称对象的方法
3.对象的特点
   每个对象都是独一无二
   对象是一个特定的事物,职能是完成特定功能
   对象是可以重复使用的
4.什么是面向对象的基本概念
   面向就是编程的时候一直把对象放在心上    //比如:面向墙壁,心里就一直是墙壁
       面向对象编程就是在编程的时候数据结构(数据组织方式)都通过对象的结构进行存储
   属性、方法
5.为什么要使用面向对象
   对象的描述更加贴合真实的世界,有利于大型业务的理解
   在程序设计过程中用对象的视角分析世界的时候能够拉近程序设计和真实世界的距离
6.面向对象的实质
   面向对象就是把生活中的问题都用对象的方式进行存储
       把对象用属性和方法的方式表示出来       
   对象与对象之间通过方法完成互动
       方法的调用
7.面向对象的基本思路
   第一步:识别对象
      任何实体都可以被识别为一个对象
   第二步:识别对象属性
      对象里面存储的数据被识别为属性   //桌子有四条腿
      对于不同的业务逻辑,关注的数据不同,对象里面的属性也不同    //主播:关注她的艺名  NBA球员:关注他的所属球队
   第三步:识别对象的行为
      对象自己属性数据的改变
      对象外部交互
8.对象的例子
   一张桌子
      组成:
    四条腿、一个桌面、长宽高、重量
      行为;
    移动它的位置
   一个NBA球员
      组成:
    头、身体、四肢
    名字、身高、性别
    所在球队、球员号码
      行为:
    吃喝拉撒
    跑步、跳跃
    运球、投篮、扣篮(特殊行为)
9.面向对象的基本原则
   对象内部是高内聚的  //该有的都有,不缺胳膊少腿
      对象只负责一项特定的职能(职能可大可小)
      所有对象相关的内容都封装到对象内部
   对象对外是低耦合的  //联系相对较少,开发更灵活
      外部世界可以看到对象的一些属性(并非全部)
      外部世界可以看到对象可以做某些事情(并非全部)
10.面向对象实践
   类的概念: //类定义数据怎么存,对象是存了数据的具体对象
      物以类聚,把具体相似特性的对象归类到一个类中 //比如詹姆斯、科比可以归到NBA球员的类中
      类定义了这些相似对象用有的相同属性和方法
      类是相似对象的描述,成为对象的定义,是该类对象的蓝图或原型
      类的对象称为类的一个实例 //类的实例化
      类的属性和方法统称为类成员
   类的实例化:
      通过类定义创建一个类的对象 //完整赋予具体数据给詹姆斯相关数据
      类的定义里面属性值是空,而对象的属性都有具体的值

   类和类的初级实例化的案例

class01.php

<?php
//类的定义以关键字class开始,后面加类名称(一般单词首字母大写)。以中括号开始和结束
class NbaPlayer{
//定义属性
    public $name="Jordan";
    public $height="198cm";
    public $weight="98kg";
    public $team="Bull";
    public $playerNumber="23";
//构造函数,在对象被实例化的时候自动调用。
//(测试时去掉注释查看两次不同效果)
    /*
    function __construct(){
        echo "In NbaPlayer constructor";
    }
    */

//构造函数,在对象被实例化的时候自动调用 (测试时去掉注释查看两次不同效果)
//析构函数通常用于清理程序使用的资源
   
    public function __construct($name,$height,$weight,$team,$playerNumber){
        echo "In NbaPlayer constructor";
        $this->name=$name;   //$this是php中的伪变量,表示对象自身。可通过$this->的方式访问对象的属性和方法
        $this->height=$height;
        $this->weight=$weight;
        $this->team=$team;
        $this->playerNumber=$playerNumber;
    }
    

//析构函数,在程序执行结束的时候会自动调用 (测试时去掉注释查看两次不同效果)
   /*
    function __destruct(){
        echo "Destorying".$this->name."\n";
    }
    */
//定义方法
    public function run(){
         echo "Runging\n";
    }
    public function jump(){
         echo "Jumping\n";
    }
    public function dribble(){
         echo "Dribbling\n";
    }
    public function shoot(){
         echo "Shooting\n";
    }
    public function dunk(){
         echo "Dunking\n";
    }
    public function pass(){
         echo "Passing\n";
    }
}
//类到对象的实例化
//类的实例化为对象时使用关键字new,new之后紧跟类的名称和一对括号。
/*$jordon=new NbaPlayer();
//对象中的属性成员可以通过->符号来访问
echo $jordon->name."\n";

//对象中的方法可以通过->符号来访问
$jordon->dribble();
$jordon->pass();*/    //不带参数的构造函数,调试去掉注释
$tom=new NbaPlayer("Tom","203cm","97kg","Heat","6");
echo $tom->name;   //无法实例化
//通过把变量设置为null,可以触发析构函数的调用。如在$tom=null前加入一句:$tom1=$tom却不会触发析构函数
//准确说是当对象不再被使用的时候,会触发析构函数,在$tom=null前加入的一句换成:$tom1=&$tom就会触发析构函数
//$tom=null;
echo "分隔符:------------\n";



//php是弱语言不能有多个构造函数,有两个构造函数一般是为了向下兼容(一个同名的,一个__construct)
?>