面向对象开发规范|学习笔记

简介: 快速学习面向对象开发规范

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第一阶段面向对象开发规范】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/711/detail/12662


面向对象开发规范

 

内容介绍:

一、面向对象开发规范

 

一、面向对象开发规范

1、目标

了解面向对象的基本开发规范,熟练运用开发规范实现项目开发

2、概念

开发规范:开发者约定俗成的开发设计方式,并不是语法要求必须做,程序员多年积累总结。

(1)属性的初始化

①属性是类对于同类事务所抽离出来的共性数据,本身在类结构中没有价值,是当具体对象产生之后,属于对象本身的,要进入对象的内存空间,类里面没有价值。

②进行类中定义属性的时候,通常不会对属性进行初始化,除非属性本身的值也具有共性。

③属性如果没有初始化数据,那么在产生对象后应该对属性完成初始化,有的属性是在操作过程中被初始化。

(2)访问修饰限定符选择:访问修饰限定符是用来限制类成员被对象访问时对象所处位置的。访问的权限从 public、protected 到 private依次变小(类对成员的控制权限依次变大)(public 到处能访问,private 只有类的内部能访问,外面能访问的区域变小,私有化越强)

①设定好的类成员本身不会被外部用到,那么应该使用 private 或者 protected

②设定好的类成员一定会给外部访问,使用 public(自己写可以开始都 public ,里面有一些 public 定义之后外面不用,立马变成 private)

③属性通常 private 居多,如果需要外部访问属性,通常会定义相关方法来实现属性的查看和修改,因为可以在方法内对数据逻辑进行代码控制,安全(数据可以进行内部操作、逻辑处理,不允许外面随便做)

④尽可能增加类对成员的控制(尽可能多使用 private,少使用 public)(主体是自己来做,让别人能用仅限于能用,内部操作不需要知道,用什么东西开接口,开 public 的方法)

3、示例

(1)属性初始化

class saler{

# 属性

public $count;

# 某个卖家拥有的商品数量,每位具体卖家对象拥有的不可能一样,所以没必要初始化

protected $discount;

# 某个卖家针对销售的折扣,同样没有统一的价值

private $money=0;

# 某个卖家的账户余额,任何一位卖家一开始做生意的时候,账户余额都为0,所以可以初始化

# 业务初始化属性

public function setdiscount($discount = 1){

#可以进行安全逻辑控制

$this->discount = $discount;

}

}

属性一般情况像 count、打折不需要初始化,但是作为一个卖家首先有一个账户,所有的卖家一上来账户里面余额肯定为0,所以此时对它初始化是可以的,不知道打几折、不知道有多少个账户,有了这个东西之后,会给它一个方法 set discount 外面给一个值传进来,在里面进行修改,此时可以加逻辑限定,比如此时可以保证里面可以进行安全逻辑控制不出错,比如打0折、打1折,打0.01折,有点过分相当于白送,所以可以在里面控制不让外面随便去改。

# 实例化对象,初始化属性

$s =new saler();

$s->count = 100;

# 打折促销:业务初始化

$s->setDiscount(0.8);

赋值 100,打折设置折扣为0.8,可以实现属性的初始化操作。

(2)访问修饰限定符选择

class saler{

# 属性

public $count;

private $money = 0;

# 增加方法操作私有属性money

public function getmoney(){

return $this->money;

}

public function setmoney($money){

# 可以对逻辑进行修改,对数据进行安全判定,保证数据的安全性$this->money = $money;

# $this->money 是属性,$money 是外部传入的参数,二者同名但是性质完全不同

}

}

$ 私有卖家知道卖什么东西什么价格就可以,与账户多少钱无关,定义一个 get 方法,还可以做逻辑验证是否有权限查看,没权限可以不给查看。增加钱同样 setMoney ,属性等于外面传出的变量赋值好,外部传的形参一般会与属性名相同,但是不是一个东西,一个是局部变量形参数,一个是属性属于类里面对象。

访问修饰限定符的选择,选择好之后可以增加它的安全性和优势来修改选择所带来的弊端,代码量自然就增加,但是面向对象本来就不是一种能够节省代码量的编程思想,它的思想是怎么能够做到安全,怎么能够做得更人性化,符合人类的思维逻辑。

4、小结

(1)属性在类中定义的时候,通常不会初始化值,除非所有类实例化得到的对象的某个属性需要是统一值

(2)应该尽可能增加类对成员的控制,即使用范围较小的访问修饰限定符优先(能用 private 的地方就不用 protected,能用 protected 就不用 public,实在不行才用 public,比如都没有类没用。

(3)属性通常是私有化的,一般是通过设定方法来实现属性的访问和修改(公共的主要原因是能够在方法里面,进行逻辑的把控,能够保证数据的安全)

相关文章
|
前端开发 JavaScript API
Axure实战22:使用Axure和CSS实现渐变色背景
Axure实战22:使用Axure和CSS实现渐变色背景
955 0
Axure实战22:使用Axure和CSS实现渐变色背景
|
JSON 负载均衡 前端开发
一文带你详细了解Open API设计规范
一文带你详细了解Open API设计规范
8800 1
|
C# 前端开发
WPF DatePicker默认显示当前日期,格式化为年月日
原文:WPF DatePicker默认显示当前日期 WPF的日历选择控件默认为当前日期,共有两种方法,一种静态,一种动态。 静态的当然写在DatePicker控件的属性里了,动态的写在对应的cs文件里,具体请看下面。
6860 0
|
Linux 异构计算 Windows
Windows操作系统:指定网卡ping连通性
某些时候,板卡上留有两个及以上万兆网口,在没有其他FPGA板卡或者只是想测一下网口或者万兆光模块的通路时,可以通过回环互ping来验证下连通性
4193 0
|
6月前
|
存储 芯片 iOS开发
格式化内存卡的方法有哪些?这几种很好用
本文介绍了内存卡常见问题的解决方法——格式化,并详细讲解了使用Windows磁盘管理器、Mac磁盘工具及第三方软件(如DiskGenius、SD Card Formatter)进行格式化的步骤。同时提醒用户:操作前务必备份数据并检查卡体是否完好,合理选择文件系统以确保兼容性。
|
9月前
|
Ubuntu 应用服务中间件 网络安全
Nginx伪流媒体服务器搭建详细说明以及案例
Nginx伪流媒体服务器搭建步骤如下:1. 安装Nginx,根据系统选择命令;2. 编辑配置文件(/etc/nginx/nginx.conf),添加mp4相关设置;3. 创建视频目录/usr/share/nginx/html/videos并上传视频;4. 重启Nginx应用更改;5. 通过浏览器访问视频,如http://your_server_ip/videos/example.mp4。注意启用mp4模块,确保视频格式支持伪流媒体播放。
532 159
|
开发框架 前端开发 Java
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
【8月更文挑战第12天】SpringBootWeb极速入门-实现一个简单的web页面01
447 3
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
|
10月前
|
安全 项目管理
ERP,Enterprise Resource Planning(企业资源计划)
ERP,即Enterprise Resource Planning(企业资源计划),是一种高度集成化的企业管理软件,它整合了物资资源管理(物流)、人力资源管理(人流)、财务资源管理(资金流)以及信息资源管理(信息流)等多个方面。其管理范畴广泛,不仅涵盖了销售、采购、生产、财务、质量等核心业务领域,还强调这些业务之间的协同运作与信息共享。
421 5
|
机器学习/深度学习 数据采集 人工智能
ERP系统中的人工智能与机器学习应用:提升企业智能化管理
【7月更文挑战第29天】 ERP系统中的人工智能与机器学习应用:提升企业智能化管理
1951 0
|
运维 JavaScript Devops
DevOps实践:通过云效实现hexo自动构建部署发布
DevOps是一种融合开发、技术运营和质量保证的流程,旨在增强跨部门沟通与协作。通过自动化软件交付和架构变更,DevOps加速了构建、测试和发布软件的过程。本文作者分享了如何使用阿里云效平台实现个人Hexo博客的自动化部署,从而实现持续集成和持续部署(CI/CD)。在应用DevOps之前,作者需手动上传和部署文件;应用后,只需提交Markdown文件,其余步骤由DevOps平台自动完成。通过云效平台的代码管理和流水线功能,实现了从代码提交到自动发布的无缝衔接。
416 2
DevOps实践:通过云效实现hexo自动构建部署发布