黑马程序员---Java面向对象编程思想小结

原创 2015年06月05日 11:07:53

-----Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


面向对象语言的概念性的东西就不阐述了,大家见的多了,多说也是无益。

简单说说我最近学习到的关于面向对象编程的一些知识点。


张孝祥老师总结的一句话对我很受用:谁拥有数据,谁就对外提供操作这些数据的方法。


首先还是说说他那个经典的例子:人在黑板上画圆。

简单一句话,就带出了三个对象:人,黑板,圆。

那么画圆的方法归于哪个对象呢?

我们可以用前面提到的公式,“谁拥有数据,谁就对外提供操作这些数据的方法”,显然,画圆需要圆的圆心与半径,圆拥有数据,故圆提供画圆的方法。


接下来有一连串的例子:

1.人开启电脑

对象:人、电脑

开启电脑方法的归属:电脑

分析:人对象操作电脑对象,通过调用电脑对象的开机方法达到开机的效果。之所以让电脑对象具备开机方法,是因为电脑开机时内部进行的大部分复杂的操作人不需要知道,由电脑封装了这些数据就可以了。

2.小猫钓鱼

对象:猫、鱼竿、鱼

钓鱼的方法归属:鱼竿

分析:猫对象操作鱼竿对象,通过调用鱼竿对象的钓鱼方法达到钓鱼的效果。因为鱼竿持有鱼钩、鱼漂等引用数据,所以由鱼竿来实现钓鱼方法是最为合理的,它只需要向猫对象返回当前的状态即可。


面试题:

1.小球从绳子的一端移动到了另一端

对象:小球、绳子 移动方法的归属: 小球

分析:小球移动,需要的数据有自身当前坐标,和下一目的坐标。这些坐标数据由绳子持有,所以小球对象必须与绳子对象绑定,小球移动需要调用绳子的提供坐标的方法。有人可能会疑惑,说为什么不让绳子具备移动的方法,但是仔细想想就会知道,移动的是小球,而不是绳子,绳子只能提供小球移动时需要的坐标数据,如果绳子自身移动,那么它移动时的数据由谁来提供呢?这不符合实际。


2.两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子。

对象:石头、石刀、树、木材、椅子

分析:这里要解决的第一个难题,就是石头磨成石刀方法由谁持有。如果石头对象持有,它调用这个方法自身就被销毁了,这显然说不通,更不可能是石刀持有,因为它那个时候还不存在。所以我们增加一个对象,一个工厂对象,由它持有把石头磨成石刀这个方法,接收石头对象,返回石刀对象。石刀持有砍树方法,接收树对象,返回木材对象。木材做成椅子,跟前面石头磨成石刀类似,我们仍旧让工厂对象持有把木材做成椅子方法,接收木材对象,返回椅子对象。


java语言和c语言最大的不同就是其编程的思想,我从开始学了c,到现在开始学习java,很多时候感觉两者写出来的代码几乎时一样的。但是慢慢的,越往后面学就越清楚,是不一样的,可能看上去大同小异,函数内部的算法没什么区别,但是思想是截然不同的。

学好java的第一步,就是深刻理解面向对象编程思想。

黑马程序员---iOS基础---面向对象编程思想

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • wodepei
  • wodepei
  • 2015年07月31日 22:13
  • 1112

面向对象思想设计_计算器小程序(设计模式入门篇_01)

名称:简单计算器程序面向对象思想的由来:面向对象编程思想的由来是从面向过程演变而来,所以我们用一个简单的计算器程序用面向过程的方式去实现以下是面向过程方式实现计算器程序:public class Ma...
  • u011967006
  • u011967006
  • 2016年12月14日 16:35
  • 1384

深入理解面向过程与面向对象的思想差异与各自特色

一、什么是面向过程 面向过程是一种思维方式。当试图通过面向过程解决问题时,我们的关注点在于问题解决的流程,重在这个过程的控制,需要用大量的模块(模块化的思想源自于硬件,在C语言中是函数)将大问题拆解,...
  • zhangliangzi
  • zhangliangzi
  • 2016年04月22日 16:48
  • 1926

黑马程序员---iOS基础---面向对象编程思想

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • wodepei
  • wodepei
  • 2015年07月31日 22:13
  • 1112

黑马程序员-java面向对象编程基础知识

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------特点:1:将复杂的事情简单化。 2:面向对象将以前的过程中的执行者,变成了指挥者。 3:面向对象这...
  • Wilson_Wo
  • Wilson_Wo
  • 2015年04月20日 21:49
  • 234

黑马程序员Java基础-面向对象编程-封装生成数组工具类

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- ...
  • kevincharles
  • kevincharles
  • 2013年11月12日 11:53
  • 795

黑马程序员——Java面向对象编程学习总结

------- android培训、java培训、期待与您交流! ---------- Java面向对象编程学习总结:     1,抽象,封装,继承,多态是面向对象程序设计中得四个特点. ...
  • u010356932
  • u010356932
  • 2015年04月06日 03:44
  • 151

黑马程序员----java语言的特性和面向对象编程

一、java语言的特性 JAVA语言有以下特性 是目前使用最为广泛的网络编程语言之一。它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点。java是目前应用最广泛的编程语言。 ...
  • zlpiano
  • zlpiano
  • 2015年06月26日 16:22
  • 818

黑马程序员-JAVA的面向对象编程

------- android培训、java培训、期待与您交流! ---------- 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS O...
  • a642384938
  • a642384938
  • 2013年05月30日 22:50
  • 359

黑马程序员——OC基础学习(一)---第一个OC语言程序和面向对象编程的基本认识

oc语言基本认识,类和对象声明及实现,方法的声明及调用.
  • fighting__bj
  • fighting__bj
  • 2015年06月27日 20:18
  • 408
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员---Java面向对象编程思想小结
举报原因:
原因补充:

(最多只允许输入30个字)