达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心 达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心
媒体报道
 当前位置:主页 > 媒体报道 >

面向对象编程开发中类与对象的关系分析

时间:2019-05-22  来源:未知  作者:广州达内培训

我们在上文中简单介绍了关于面向对象编程中的对象的概念以及编程方法等问题,下面我们就一起来了解一下,关于编程开发中的类和对象的关系问题。

面向对象编程开发中类与对象的关系分析

类和对象的关系:

类是描述某些具有共性事物的一个抽象概念,它不是一个客观存在的东西,它就是一个模板。

类可以定义对象

简单说:类是对象的模板,对象是类的实例。

类的抽取过程是从众多对象中提取出相似特征和动作进行封装的,不是凭空捏造的,比如:

小明是一个学生,小花是一个学生,经过我们从这一个个对象中我们发现他们都有相同的属性和行为,

这个时候就可以使用学生类进行承载。思考的过程是先有对象再有类,使用的时候现有类再创建对象。

需要强调一点:每个对象都拥有相同的方法,但各自的数据可能不同。

类都有哪些构成?

一个类通常有哪些元素构成,这些元素都有什么存在价值,换句话我们可以通过这些元素可以干什么。

【类名】描述类的职责,知名达意

类名的好坏直接影响我们对这个类职责的定义,所以好花点时间去琢磨一下类的命名。

【注释】使用注释说明方法,属性,类职责

【属性】用来表示对象状态

【构造函数】可以为创建对象提供多种形态的入口,可以初始化对象

构造函数是在对象初始化的时候使用的,通常某个对象在提供自己的对外服务的时候,必须让其他对象传递相关的数据,

在构造函数中进行接受这些数据是经常的做法,如果某些数据是无关紧要的可以不用再对象创建时就提供的建议不要通过构造,

从某种意义上来说构造函数的用途就是为对象获取整个生命周期重要的数据提供一个入口,对外表达一个意义:你要想使用我(对象),就必须提供给我这些数据,否则我(对象)的服务是不能提供给你的。

比如:数据库持久对象,在使用它提供操作数据服务之前必须要给它提供数据源连接的信息,不然是不可以使用的,具有强制性。

构造函数经常用来:

1.初始化本对象的所有属性。

2.强制用户类提供相关数据,并提供多种创建该对象的方法(构造函数重载)

3.也可以在类初始化的时候做其他的业务操作。

【访问方法setter】保证访问属性的安全,修改属性保证只有一处

这也是面向对象又一特性"封装"的体现,控制自身属性的安全访问。

【公共方法】提供类对外的服务

提供公共方法也是类存在的重要职责,一个没有任何对外服务的类可以放弃啦。

类内部提供方法的实现细节,而类的使用者不用关心具体谢姐。

提公共方法的命名一样很重要,

【私有方法】将不想用户关心的实现,放到私有方法中。

【作用域】控制属性的访问范围。

怎么创建一个合理的类

1.提供合适的构造函数。

2.让类属性的作用域尽可能小。

3.对类中的元素要合理添加上注释,没有任何注释的类如果命名再不合理就会造成维护理解困难。

4.提供合适的对外接口,这个下面有专门讲。

5.设计的类必然是要和其他的类进行交互的,要么是调用其他的服务,要么本身提供服务,没有这两点的类可以干掉啦。

6.要知道一个原则:类应该只对自己负责

自身状态的变更:

比如:商品的状态由上架,下架。如果要变更商品的状态应该有商品自己去提供变更状态的公共接口。

自身提供的服务:

比如:画图形,方形,圆形,星型它们内容应该是知道如何画出自己的图形。这就是对象负责自己的行为。

7.减少对象之间的依赖

相互依赖的比较少,也就是说一个类的修改不会对其他类产生影响,或者影响很小。

我们经常看到使用hibernate的对象之间关系维护都是对象中直接持有另外一个对象,或集合。

甚至将属于另外一个类职责的行为放到了本类中。

这样的设计会增加对象之间的依赖。

【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!




上一篇:没有了
下一篇:互联网环境下的三种软件测试模式类型

友情链接:
  • 全球最大晶圆代工半导体制造厂,台积电斥资订购艾斯摩尔机器设备
  • 英特尔依然是那个英特尔,且看英特尔的城防体系
  • 支持双 DRAM 内存接口,慧荣企业级 SSD 主控方案披露
  • 在全球被反垄断罚款,冤!高通到底哪里得罪了欧盟?
  • 强强联合!万业、微电子所和芯鑫共同打造全新半导体设备
  • 复旦大学校长称:对于集成电路产业发展,大学应该主动担当
  • 技术再升级!无锡中科芯攻克晶圆级再布线及晶圆级凸点制备关键技
  • 聚力!万业企业设立集成电路装备集团,提供自主可控设备
  • 德州仪器C2000微控制器增强连通性和控制性
  • 英特尔打出降价策略,以免被竞争对手 AMD 打败?
  • 贸易摩擦的闹剧没有赢家,苹果有勇气离开中国吗?
  • 图像信号与视觉处理器的发展趋势
  • 真干快消品定位方案班(第二期)火热开班
  • Java集合 ArrayList原理及使用
  • TDD(测试驱动开发)死了吗?
  • JAVA基础之XML相关
  • javaweb项目搭建ehcache缓存系统
  • 每日一码——字符串统计
  • 一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生
  • 九:模板方法模式
  • 十二:命令模式(人员解耦和)
  • Java 转PPT为图片、PDF、SVG、XPS、ODP以及PPT和PPTX互转
  • SpringCloud学习(SPRINGCLOUD微服务实战)一
  • 记一次微信网页授权后获取用户信息并重定向
  • 速途新营销五点实战洞察解码“品效合一”
  • 十一:外观模式详解(Service,action与dao)
  • 手把手教你学会 基于JWT的单点登录
  • mysql锁机制总结,以及优化建议
  • 解决多个版本jar包冲突【jar内包名重命名】
  • 中国首张5G终端电信设备进网许可证 华为Mate 20 X 5G版入网
  • RPC之Thrift
  • 高级Java工程师必备 ----
  • 天猫618期间实物支付GMV增长38.5%
  • 换季了,老板你的库存处理好了吗?
  • 从“618”大数据看中国消费新活力
  • 小米生态链:贵在格局感与收放度
  • CODING 2.0 企业级持续交付解决方案
  • 老铁奇趴“新京济” 快手*京东618战报出炉
  • 中小企业新媒体运营基本技能
  • 上汽大通房车再度携手LINE FRIENDS 魔都巡游顺利开启
  • 华为高端手机国内市场份额超苹果夺得榜首
  • 中国智能制造分析报告
  • iPlus艾加营销助力腾讯广告牵手吴晓波 推进商业IP变现
  • 2019世界新能源汽车大会7月1日将在海南举行
  • 区域酒企如何转型突围
  • 时时彩论坛
  • 五星体育斯诺克
  • 北单比分直播
  • 河北11选5走势图
  • 福建体彩36选7开奖结果
  • 九龙图库下载