结构化编程

  在程序设计的早期,程序用流程图和自顶向下的方法设计。采用这种设计方法,程序员会将一个大的问题分解成更小的任务,然后为每个更小的任务编写一个过程(或函数)。最后,程序员会编写一个主过程来启动程序流程,随后根据程序流程走向,调用想要的其它过程。这种类型的程序设计被称为结构化编程。

面向对象编程

  20世纪70年代以后,面向对象编程(Object Oriented Programming,简称OOP)开始流行。OOP采用了一种完全不同的方法来开发计算机应用程序。在这种方法中,程序不是围绕着要解决的任务来设计,而是围绕着要解决的问题中的对象来设计。

  把每个独立的功能模块抽象成类形成 对象,由多个对象组成这个系统,这些对象之间都能够接收信息、处理数据和向其它对象发送 信息等等相互作用。就构成了面向对象的程序。

  建立对象模型,将问题域化为不同的对象去处理。

结构化和OO的区别

  1.在结构化编程中,程序围绕着要解决的任务来设计。

  2.面向对象编程中,程序围绕着问题域中的对象来设计。

什么是对象?

  对象是某一类的具体化实例,每一个类都是具有某些共同特征的对象的抽象。

  万物皆对象

什么是类?

  具有相同或者相似结构、操作和约束规则的对象组成的集合。

类和对象的关系?

  类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对象的抽象就是类.类描述了一组有相同特性(属性)和相同行为(方法)的对象。

  类是具有相同属性和行为的一组对象的集合,在软件系统中,我们用类来模拟现实生活中的实体。

类和对象

  1.类(Class)是用来描述一个对象(Object):

   2.类描述了每个对象应包括的数据

   3.类描述了每个对象的行为特征

   4.类是对一类事物描述,是抽象的、概念上的定义;

   5.对象是实际存在的该类事物的每个个体,因而也称实例(instance)。

   6.创建对象的过程称为 创建对象 也称为实例化。

  

创建类

  PHP 中使用关键字 class 来定义一个类。类的命名一般使用首字符大写,而后每个单词首字符大写连接的方式方便阅读。

  class Person{

    public $id;            //序号

    public $name;     //姓名

    public $birth;      //生日

    public $sex;        //性别

  }

  类中的一个成员变量由如下部分组成:

    访问修饰符。可以是public、private或protected

    成员变量名称。成员变量名称必须是一个有效的标识符,后面用分号结束。

属性和行为

  class Person{

    //这里是属性

    public $id;       //序号

    public $name;     //姓名

     public $birth;    //生日

     public $sex;      //性别

    //这里是行为

    public function setName($name){

      $this->name=$name;

    }

    public function getName(){

      $this->name;

    }

  }

创建对象

  $p = new Person();

  使用 new 这个关键字创建对象

  注意:

    $p = new Person();也可以写成 $p = new Person;但不建议使用后面的这种方式。

构造函数

  构造方法又称为构造函数,是对象被创建时自动调用的方法,用来完成类初始化的工作。

  构造函数和其它函数一样,可以传递参数,可以设定参数默认值。

  构造函数可以调用属性,可以调用方法。

  构造函数可以被其它方法显式调用。

  public function __construct($name, $birth, $sex){

    $this->name=$name;

    $this->birth=$birth;

    $this->sex=$sex;

  }

析构函数

  析构函数:当某个对象成为垃圾或者当对象被显式销毁时执行。

  public function __destruct(){}

  destruct() 析构函数,是在垃圾对象被回收时执行。

  析构函数也可以被显式调用,但不要这样去做。析构函数是由系统自动调用的,不要在程序中调用一个对象的析构函数。析构函数不能带有参数。

  GC(Garbage Collector)

  在 PHP 中,没有任何变量指向这个对象时,这个对象就成为垃圾。 PHP 会将其在内存中销毁。这是 PHP 的 GC(Garbage Collector)垃圾处理机制,防止内存溢出。当一个 PHP 线程结束时,当前占用的所有内存空间都会被销毁,当前程序中的所有对象同样被销毁。

  

PHP面向对象概述的更多相关文章

  1. Java之面向对象概述,类,构造方法,static,主方法,对象

    一.面向对象概述 面向过程 "面向过程"(Procedure Oriented)是一种以过程为中心的编程思想.这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响 ...

  2. 菜鸟笔记 -- Chapter 6.1 面向对象概述

    6.1 面向对象概述 在程序开发的初期人们使用结构化开发语言,但是随着时间的流逝,软件的规模越来越庞大,结构化语言的弊端逐渐暴露出来,开发周期被无限制拖延,产品质量也不尽如人意,人们终于发现结构化语言 ...

  3. c# 第28节 面向对象概述

    本节内容: 1:面向对象概述 2:类与对象的概念 1:面向对象概述 面向对象也称:OOP :object-oriented programming 面向对象的程序设计 面向过程:堆代码,从头开始,自己 ...

  4. Python入门篇-面向对象概述

    Python入门篇-面向对象概述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.语言的分类 面向机器 抽象成机器指令,机器容易理解 代表:汇编语言 面向过程 做一件事情,排出个 ...

  5. Java 面向对象概述原理: 多态、Object类,转型(8)

    Java 面向对象概述原理: 多态.Object类,转型(8) http://docs.oracle.com/javase/tutorial/java/IandI/override.html Java ...

  6. 09_java之面向对象概述

    01面向对象和面向过程的思想 * A: 面向过程与面向对象都是我们编程中,编写程序的一种思维方式 * a: 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程. * b: ...

  7. Java面向对象概述

    一.什么是面向对象? 现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,如人类.书桌.计算机.高楼大厦等.人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象都是由哪些部分组成的 ...

  8. Java面向对象概述及三大特征(封装,继承和多态)

    一.面向对象思想 Java是面向对象的高级语言,对于Java语言来说,万事万物皆对象! 它的基本思想是使用类,对象,继承,封装,消息等基本概念进行程序设计.面向对象程序的最小单元是类,类代表了客观世界 ...

  9. Java面向对象概述和三大特性

    Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心.围绕着 Java 类和 Java 对象,有三大基本特性:封装是 Java 类的编写规范.继承是类与类之间联系的一种形式.而多态 ...

随机推荐

  1. 以太坊的crypto模块--以太坊源码学习

    以太坊的crypto模块 该模块分为两个部分一个是实现sha3,一个是实现secp256k1(这也是比特币中使用的签名算法). 需要说明的是secp256k1有两种实现方式,一种是依赖libsecp2 ...

  2. 2.Node.js access_token的获取、存储及更新

    文章目录:         1.Node.js 接入微信公众平台开发         2.Node.js access_token的获取.存储及更新 一.写在前面的话   上一篇文章中,我们使用 No ...

  3. storm定时任务【tick】

    一. 简介      storm作为流计算,处理数据通常以数据驱动.即只有当spout发射数据才会进行计算.那么如果想要做定时任务如何处理哪,例如有的bolt需要输出一段时间统计的结果,这里一段时间可 ...

  4. Java对【JSON数据的解析】--官方解析法

    要求:解析下面5个JSON数据 1.String string ="{name:'zhangsan',age:18}"; 2.String string2 = "{per ...

  5. Kotlin尝试之一:写代码前的准备

    Kotlin是一种静态类型的编程语言,可在Java虚拟机上运行,也可以编译为JavaScript源代码. 其主要发展来自位于俄罗斯圣彼得堡的JetBrains程序员团队. 虽然语法与Java不兼容,但 ...

  6. SpringBoot学习helloworld

    这几天开始学习springBoot记录一下(Hello World) pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0 ...

  7. [Leetcode] Binary search, DP--300. Longest Increasing Subsequence

    Given an unsorted array of integers, find the length of longest increasing subsequence. For example, ...

  8. js基础回顾-数据类型和typeof怎么用

    js的基本数据类型有六种,undefined.null.number.string.boolean.object. 未定义        空      数字        字符串    布尔     ...

  9. NLTK学习笔记(四):自然语言处理的一些算法研究

    自然语言处理中算法设计有两大部分:分而治之 和 转化 思想.一个是将大问题简化为小问题,另一个是将问题抽象化,向向已知转化.前者的例子:归并排序:后者的例子:判断相邻元素是否相同(与排序). 这次总结 ...

  10. windows手动搭建Kotlin命令行环境

    kotlin官网:https://kotlinlang.org 我们可以从GitHub下载.目前最新版本是1.1.2-5 https://github.com/JetBrains/kotlin/rel ...