博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
少走弯路去学习面向对象编程
阅读量:5737 次
发布时间:2019-06-18

本文共 1341 字,大约阅读时间需要 4 分钟。

在学习面向对象的过程中,我自己也走了很多的弯路。一般来讲,接触面向对象是做为编程语言的一部分。那时候认为在程序中写一个 Class 关键字就是面向对象,写 Class A: Class B 就是面向对象的继承。实际从编程语言的角度来理解是无法掌握面向对象的精髓的,在这里我想以我的经验来告诉大家我的一些方法。

  面向对象是一种思想理论,要远远高于编程语言。不深入理解面向对象理论就无法做到编写比较高级的软件,而且往往这些软件不能有效应对变化,不能复用,不能扩展,不能维护等。使用抽象方法还能应对软件的复杂度,因为抽象是对事物的简化方法。

  首先在学习面向对象前明白你的目的然后讲方法(这个很重要,如果目的不明,任何事情都做不好,而且肯定方法不对)。那么首先想想面向对象的目的是什么?

  先搞清抽象是什么

  如果搞不清抽象是什么,其他的特性等于白说。

  抽象是具体到一般的过程。虽然抽象是一个简单的概念或者说过程,但是要领悟其中的涵义不能单从编程语言上来,应该是一种逻辑思维的角度来思考抽象是什么。

  你可以对自然世界的进行抽象演习,同时也是抽象最主要的学习方式。要知道面向对象理论是人们从对现实世界的一个客观反映,是在参照现实世界,比如你是对你的某某人抽象为人,他的行为怎么抽象。

  接下来思考实现抽象有什么方法

  比如分类法就是抽象的基本方法。然后联系对行为抽象,因为分类法是主要是针对静态的东西进行抽象(淡然不排除动态),而行为是对象与对象交互方式,所以对行为抽象也具有重要的意义。

  然后要思考软件的本质(数据和逻辑)以及软件的变化特性,以及如何重用(你看设计模式的时候,要注意这书的副标题)。

  抽象可以应对变化,如何应对变化你自己想清楚。抽象是什么,以及如何应对变化,如果搞不清楚的话,面向对象只会停留在语言层面。语言层面的东西是浅显的,真正要掌握的是思想,就像我们人类一样。

  思考面向对象的继承、封装以及多态

  这三个词如果从编程语言的角度来讲,没有多大的意义。要软件根本上来讲,如何重用啊,外部如何看待内部以及在运行时如何处理抽象与实现的关系。

  软件实现为了达到应对变化,提高复用。

  继承的本质是提高重用,但是继承不是重用的唯一方法,还有组合这个非常重要的方法。

  继承从语言层面来讲可以简单理解为 class A : class B,组合才是提高重用的关键,现在很多的商业上不都是要整合啊,实际就是组合的一种显示表述,自己不实际去做,但是掌握着关键的东西(核心竞争力)。那具 体的上来讲,我们的软件外包不就是组合的一种现实表述吗,发达国家设计软件,而把软件的具体编码交给别的国家。

  封装是一种机制,就是对象的外部看到是的对象是一个统一的整体,从语言层面上讲就是那些关键字啊。真正要掌握的是如何封装,如何确定哪些东西要封装,多态可以简单理解为一个抽象有很多具体实现。 那么在运行期间就需要动态决定采用哪种具体实现。

  最后要真正把握软件的变化,复杂度以及如何重用才是根本,面向对象对软件来讲只是一种方法手段。

转载于:https://www.cnblogs.com/cwbo-win/articles/2831090.html

你可能感兴趣的文章
英国征召前黑客组建“网络兵团”
查看>>
Silverlight 2.5D RPG游戏“.NET技术”技巧与特效处理:(十二)魔法系统
查看>>
[NPM] Run npm scripts in series
查看>>
vs2013修改书签(vs书签文件位置)
查看>>
C语言学习笔记
查看>>
PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...
查看>>
PS 如何使用液化工具给人物减肥
查看>>
cvc-complex-type.2.4.c: The matching wildcard...
查看>>
android 读取json数据(遍历JSONObject和JSONArray)
查看>>
pyjamas build AJAX apps in Python (like Google did for Java)
查看>>
<JavaScript语言精粹>-读书笔记(一)
查看>>
NPM教程
查看>>
Java学习笔记(40)——Java集合12之fail-fast
查看>>
Centos 配置IP的方式
查看>>
Go 的吉祥物,萌不萌
查看>>
Java 的swing.GroupLayout布局管理器的使用方法和实例
查看>>
Android中Activity和Fragment的生命周期的对比
查看>>
C++Primer_笔记_异常处理
查看>>
分区交换 alter table exchange partition 在线表 历史表交换
查看>>
zabbix详解:(二)添加被监控机器
查看>>