Day20 类别与物件介绍

object---物件(东西)、概念,宇宙间任何具体的东西或抽象的事物

物件导向(object-oriented),全名是「物件导向程序设计」,大陆用语是面向对象,两个其实是一样的唷~ ~物件导向指的是用程序来模拟真实世界物体的特性和使用方式

举例来说,生活中常常可以看到许许多多的物体,在程序中我们称为物件,因此例如机车、萤幕、滑鼠、背包、人等等,我们在程序中都叫做物件,为了模拟真实世界,解决真实世
界的问题,利用「物件」的概念來架构所有的软件。

了解几个跟物件导向相关的单词

oo--物件导向 Object Oritened
OOA -- (Object Oritened Analysis) 物件导向的分析方法
OOD -- (Object Oritened Design) 物件导向的设计方法
OOI -- (Object Oritened implementation) 物件导向的实现方法
OOP -- (Object Oritened Programming)物件导向的程序设计 (OOA->OOD->OOI)

物件导向程序设计的基本特性
  • 封装性(Encapsulation):
    将资料与处埋资料的方法集中在一个類别中,放在一起的动作就称为封装,欲取得類别内的资料,必须透过方法來取得,因此资料对外是隐藏的

  • 继承性(Inheritance):
    利用继承的方式來遗传(~100%)上层的功能及依需要增减其函式或是覆盖,可简化重覆撰
    写程序,并且减少出错的机率

  • 多型性(Polymorphism):
    用同样的表示方式而能处理不同類别资料的方式,就称之为多型,方式是定义名称相同的方法,可以传入单或多个数的参数或给型态,利用参数个数和型态,呼叫到对应的方法

三个主要特徵來描述物件(Object)

所有事物的实体表现就是物件

  1. 状态(state):
    物件的状态指的是「物件本身所包含的资讯」,指物件各种特性的现况。
    比如猫咪有可爱、傲娇、毛色、体型等等资讯,或是柚子有水分多寡、颜色等资讯。

  2. 行为(behavior):
    物件的行为,或是物件提供的操作,指物件的功能。
    比如说猫可以奔跑、撒娇、爬高,或是柚子可以做帽子等等

  3. 身份唯一(identity):
    每个物件都是唯一的,身份标示一个物件,假设你有一只可爱的猫猫,那那只猫猫对你而言就是唯一的那只

class 类别

所有描述事物的概念都是类,所有事物的操作流程也是一个类,类是一种思想上得或者未实现的东西

基本语法:

class 类名{
   //属性、方法
}

例如:
男人是类
女人是类
人是类
做饭是类(做饭的过程)
连接数据库也是一个类(连接数据库的过程)

类和对象的关系

类别:定义程序的方法、属性
物件:可执行的东西
物件是类别的实例化
简单来说物件的妈妈就是类别,物件是由类产生的一个实际的事物或者操作流程,这个过程叫做实例化,做出一个实际存在的例子或物体的过程。

  • 抽象化 VS 实例化
    把物件多个抽象特徵抽出来总结到一起,形参一个概念,就是抽象化,把实际的特徵抽出来总结到一起,形成一个概念,就是抽象化。而把概念付出实际做出来就是实例化。

  • 成员

    • 属性
    • 方法
  • 例子:类和物件
    猫咪:

    • 特徵:
      体型
      个性
      年龄
    • 功能:
      会撒娇
      会傲娇
      会咬线
      会爬树
    • 一种是用於对特徵的描述 ---- 成员属性(负责存放物件的资料)
    • 一种是对其功能的描述 ---- 成员方法
  • 一个類别包含:

    • 属性(属性是一些直接定义出来的变数)
    • 方法(方法是一些功能的函数)

类的声明

  • 类文件的书写规则(通常)

    • 函数的文件名xxx.func.php
    • 类的文件名 xxx.class.php
    • 类名惯用驼峰命名法是每一个单词的首字母大写,那麽就意味着类文件名的首字母也要大写
  • 类的书写规则

    • 类必须以class关键字开始,class关键字之後跟类名,类名通常和文件名相同。
    • 类名之後直接跟{}即可。
  • 成员属性的书写规则:

    • 声明成员属性时必须使用关键字var或者public private等。
    • 声明成员属性时,可以赋值也可不赋值。
    • 声明成员属性时,不能赋一个函数值。
  • 成员方法的书写规则:

    • 声明成员方法时,需要使用function关键字。
    • 声明成员方法可以传入参数也可以不传入参数。
    • 声明成员方法时,方法允许存在返回值。
    • 记住:类中只能出现成员属性和成员方法,不允许出现其他的代码,否则会有语法错误。

<<:  Day19:WS 基本 API

>>:  Day 20:全域、路由、元件内-Navigation Guards

Domain layer testing

今天会为上一篇所写的两个 use case 加上 unit test。 GetLinesAndSta...

Golang-gRPC & Protocol Buffers

之前都是使用RESTful API开发 换工作面试几轮之後发现有蛮多家公司都在使用gRPC 就多学一...

用 Python 畅玩 Line bot - 25:权限分享

有时候一个 line bot 不会只有一个人去做管理,但是总有不方便共用 line 帐号的时候,这时...

Day-17 就是要重现这一部!没有极限的 PS2!

在这第六世代的战争中、面对来势汹汹的 DC、SONY 当然也早就有准备、非常机歪的选在 DC 发售的...

响应式网站注意细节-30天学会HTML+CSS,制作精美网站

现在使用智慧型手机比率最高,手机画面很小,所以在制作网页时应注意以下细节 只显示重要的资讯及减少栏位...