面向对象从接触到入门
2016-05-05 14:08
267 查看
文章将分四部分讨论
[b]1 我们的问题
[/b]
2 什么时候及为什么看设计模式
3 设计模式讲的什么
4 通过Java入门
[b]1 我们的问题[/b]
也许在迈入编程神秘世界之前,我们都在纠结从C语言的结构化编程开始呢还是直接投入OO的怀抱。
可能你跟我一样也听说了,习惯了一种思路就很难开始转到另一种。或许你会这样,想了又想,昂扬的翻开了一本Java或者C++程序设计大部头的书本,然后陷落到封装、继承、多态的海洋中。书翻了一页又一页,一个章节看完了接着下一个章节。最后我说,咱们来搞点什么吧,可是谁也不知道从哪里下手。
一个程序是被怎么设计出来的?为什么我看了很多的编程语言还是学不会设计?为什么说ctrl+c,ctrl+v很失败,我觉得也挺好呀?从大一开始学习C++,Java也写了毕业到现在,为什么提起OO,仍旧是嘴里面向对象的三大特征,再之后就什么都说不出来了?
别意外,这些问题都是好长一段时间,同样也困扰了我很久,直到现在。
我想一下,在这之前我是怎么写代码的呢。
想清楚这一步骤要做什么,然后需要几个函数处理,从类似地地方将一大块代码copy过来,然后修改。是了,问题就这样解决了,哈哈哈哈,我很厉害哦。实际上,这就是过程化编程。
这个时候我们这样设计一个程序:把需求理解成一条一条的业务流程,然后把流程组合交织成一块,然后划分为一个有一个模块,最终又通过函数,实现了需求。这时候,或者会想到unix编程艺术强调的模块化编程,心里带着点小得意,同时也有点困惑,却不知道问题出在哪里。
2 什么时候及为什么看设计模式
直到我开始看了《大话设计模式》。辞职这段时间,逐渐看完了设计模式,对整本书,我理解吸收的也许很少,但总感觉是打开了一扇门。
书里面有一句话:没有学过设计模式,那么对于多态乃至面向对象的理解多半是肤浅和片面的。之前我很多次打开设计模式,总觉得过于枯燥,还是无从下手,我想如果你完整的看完了一本面向对象的设计语言的书,这个时候就勇敢的打开设计模式吧,不要说设计模式是一个很神秘的东西,需要写多少行代码才可以学习一类。
程序员思维修炼有提到一个德雷福斯模型
所谓的设计模式就是这样的一份指令清单,告诉你什么样的设计是好的设计,应该如何使用好一门面向对象的语言。看完了设计模式,思维才有了着地点,才会摆脱过程化变成拷贝粘贴的漩涡。不要以为设计模式是终点,读完了设计模式,才刚刚上路呢。所以,我说就勇敢的开始吧。
3 设计模式讲的什么
设计模式讲的什么?六大设计原则,一句话:
封闭-开放:已经写好代码,对于修改封闭,扩展开放
单一职责:一个类只负责一项功能,
迪米特法则:如果两个类不必直接通信,那就不应该发生直接的相互关系
依赖倒转:针对接口编程,不要针对实现编程
里式代换:父类都能被子类替换
接口隔离:一个类要实现的接口中不应该包含他不需要的方法
然后就是由六大设计原则得出的23中设计模式:
创建型:研究对象的创建。
工厂方法模式,抽象工厂模式,单例模式,建造者模式:原型模式
结构型:研究对象的组成及其依赖关系。
模板方法模式(Template Method);观察者模式(Observer);状态模式(State);策略模式(Strategy);职责链模式(Chain of Responsibility);命令模式(Command);访问者模式(Visitor);调停者模式(Mediator);备忘录模式(Memento);迭代器模式(Iterator);解释器模式(Interpreter)。
行为型:描述对象或类的模式及通信方式
模板方法模式(Template Method);观察者模式(Observer);状态模式(State);策略模式(Strategy);职责链模式(Chain of Responsibility);命令模式(Command);访问者模式(Visitor);调停者模式(Mediator);备忘录模式(Memento);迭代器模式(Iterator);解释器模式(Interpreter)。
4 面向对象通过Java入门
我建议的路线路线:
1 完整的看完一遍 《think in java》,书能从头看到尾 。过一边,了解Java可以做到什么事情。
2 回过头复习重点:
初始化与清理章节:了解堆、栈,垃圾回收。
持有对象:容器分类
各种容器具体特性及选择
泛型及容器深入研究
多线程处理 并发
3 学习设计原则及设计模式
这一步后或许就会觉得自己像是合格的新手了。
与大家共勉。
[b]1 我们的问题
[/b]
2 什么时候及为什么看设计模式
3 设计模式讲的什么
4 通过Java入门
[b]1 我们的问题[/b]
也许在迈入编程神秘世界之前,我们都在纠结从C语言的结构化编程开始呢还是直接投入OO的怀抱。
可能你跟我一样也听说了,习惯了一种思路就很难开始转到另一种。或许你会这样,想了又想,昂扬的翻开了一本Java或者C++程序设计大部头的书本,然后陷落到封装、继承、多态的海洋中。书翻了一页又一页,一个章节看完了接着下一个章节。最后我说,咱们来搞点什么吧,可是谁也不知道从哪里下手。
一个程序是被怎么设计出来的?为什么我看了很多的编程语言还是学不会设计?为什么说ctrl+c,ctrl+v很失败,我觉得也挺好呀?从大一开始学习C++,Java也写了毕业到现在,为什么提起OO,仍旧是嘴里面向对象的三大特征,再之后就什么都说不出来了?
别意外,这些问题都是好长一段时间,同样也困扰了我很久,直到现在。
我想一下,在这之前我是怎么写代码的呢。
想清楚这一步骤要做什么,然后需要几个函数处理,从类似地地方将一大块代码copy过来,然后修改。是了,问题就这样解决了,哈哈哈哈,我很厉害哦。实际上,这就是过程化编程。
这个时候我们这样设计一个程序:把需求理解成一条一条的业务流程,然后把流程组合交织成一块,然后划分为一个有一个模块,最终又通过函数,实现了需求。这时候,或者会想到unix编程艺术强调的模块化编程,心里带着点小得意,同时也有点困惑,却不知道问题出在哪里。
2 什么时候及为什么看设计模式
直到我开始看了《大话设计模式》。辞职这段时间,逐渐看完了设计模式,对整本书,我理解吸收的也许很少,但总感觉是打开了一扇门。
书里面有一句话:没有学过设计模式,那么对于多态乃至面向对象的理解多半是肤浅和片面的。之前我很多次打开设计模式,总觉得过于枯燥,还是无从下手,我想如果你完整的看完了一本面向对象的设计语言的书,这个时候就勇敢的打开设计模式吧,不要说设计模式是一个很神秘的东西,需要写多少行代码才可以学习一类。
程序员思维修炼有提到一个德雷福斯模型
所谓的设计模式就是这样的一份指令清单,告诉你什么样的设计是好的设计,应该如何使用好一门面向对象的语言。看完了设计模式,思维才有了着地点,才会摆脱过程化变成拷贝粘贴的漩涡。不要以为设计模式是终点,读完了设计模式,才刚刚上路呢。所以,我说就勇敢的开始吧。
3 设计模式讲的什么
设计模式讲的什么?六大设计原则,一句话:
封闭-开放:已经写好代码,对于修改封闭,扩展开放
单一职责:一个类只负责一项功能,
迪米特法则:如果两个类不必直接通信,那就不应该发生直接的相互关系
依赖倒转:针对接口编程,不要针对实现编程
里式代换:父类都能被子类替换
接口隔离:一个类要实现的接口中不应该包含他不需要的方法
然后就是由六大设计原则得出的23中设计模式:
创建型:研究对象的创建。
工厂方法模式,抽象工厂模式,单例模式,建造者模式:原型模式
结构型:研究对象的组成及其依赖关系。
模板方法模式(Template Method);观察者模式(Observer);状态模式(State);策略模式(Strategy);职责链模式(Chain of Responsibility);命令模式(Command);访问者模式(Visitor);调停者模式(Mediator);备忘录模式(Memento);迭代器模式(Iterator);解释器模式(Interpreter)。
行为型:描述对象或类的模式及通信方式
模板方法模式(Template Method);观察者模式(Observer);状态模式(State);策略模式(Strategy);职责链模式(Chain of Responsibility);命令模式(Command);访问者模式(Visitor);调停者模式(Mediator);备忘录模式(Memento);迭代器模式(Iterator);解释器模式(Interpreter)。
4 面向对象通过Java入门
我建议的路线路线:
1 完整的看完一遍 《think in java》,书能从头看到尾 。过一边,了解Java可以做到什么事情。
2 回过头复习重点:
初始化与清理章节:了解堆、栈,垃圾回收。
持有对象:容器分类
各种容器具体特性及选择
泛型及容器深入研究
多线程处理 并发
3 学习设计原则及设计模式
这一步后或许就会觉得自己像是合格的新手了。
与大家共勉。
相关文章推荐
- 图片加载库Fresco
- linux 下操作Mysql系列文章一
- dubbo与zookeeper搭建类soa服务
- md5加密 控制台传入与web传入参数 md5加密结果不同
- Spark生态之Alluxio学习3---机器重启后数据存储位置的变化
- 百度董事长李彦宏:决定成功的基本要素是什么?
- 绝对定位 与 z-index
- 挂断电话
- 解析js面试题(上)
- MVC开发模式及其形成过程
- HTML列表
- python代码结构
- Android json数据解析
- 将 ASCII 码表示的十进制数转换为二进制数
- Java 日期加减计算.
- linux send与recv函数详解
- 学习Android Studio开发工具之Activity3(框架2)
- 各种语言版本的程序样例集
- 原生js和jquery分别实现伸缩菜单的制作-水平方向导航栏
- eclipse+sdk配置问题