java(2)之前往对象村
这次说一说面向对象与面向过程的区别以及面向对象的优点。
听一听用面向过程思想编程的程序员写程序时的心声:What are the things this program has to do? What procedures do we need?
啊哈,作为一名合格的准java程序员的我的想法是:What are the things in this program......who are the key players?
从中,可以形象的体现出面向对象与面向过程的区别。面向过程写程序时,关心的是程序按什么顺序做哪些事情,而面向对象的程序是关注程序中有哪些事物(正规叫法是类)。
比如,项目经理要给你个需求,要求写个图形(三角形,正方向,圆形)旋转同时播放音乐(mp3格式)的程序(你在播放器中常看到的,播放音乐时,歌手的头像在转动)。
作为一个资深的C语言玩家的小码同学,稍加思索就找到啦这个程序的两个重要过程:图形旋转,播放音乐。so his program is:
rotate(shapeNum) {
// make the shape rotate 360º
}
playSound(shapeNum) {
// use shapeNum to lookup which
// AIF sound to play, and play it
}
我思考很久,也找到了其中的类:图形。(哈哈)
继续按着面向对象的思想思索,这个类有什么属性呢?需求里没提吧。类的行为呢?有旋转,和放音乐的行为。嗯,分析完就写程序啦。
class cirlce {
ratate() {
//code to ratate a circle
}
playSound() {
//code to ratate a circle
}
}
class Square {
ratate() {
//code to ratate a circle
}
playSound() {
//code to ratate a circle
}
现在项目经理说需求有变
面向对象三大特性中的:继承,多态,让代码的复用率提高了老多。
面向对象优点非常非常的多,自己可以去深深体验一下,编程学习中自己尝试是非常非常重要的。
一个小建议:
If you’re stuck on an exercise, try talking about it out loud. Speaking (and hearing) activates a different part of your brain. Although it works best if you have another person to discuss it with, pets work too. That’s how our dog learned polymorphism.
java(2)之前往对象村的更多相关文章
- 3.Java基础之Date对象
毕向东老师Java基础学习笔记——Date对象 今天学习Java中的Date对象后,感觉这个对象对我们主要有以下几点用处. 1.获取时间和日期并按照自己定义的格式显示. 2.网站设计时显示时间. 知 ...
- 2.Java基础之Runtime对象
毕向东老师Java基础学习笔记——Runtime对象 今天学习Java中的Runtime对象后,感觉这个对象对我们主要有以下几点用处. 1.使用java代码打开本地可执行文件,比如打开一个计算器. 2 ...
- 1.Java基础之System对象
毕向东老师Java基础学习笔记——System对象 今天学习Java中的System对象后,感觉这个对象对我们主要有以下几点用处. 1.获取当前操作系统版本和类型. 2.获取当前操作系统的path中的 ...
- java比较两个对象是否相等的方法
java比较两个对象是否相等直接使用equals方法进行判断肯定是不会相同的. 例如: Person person1 =new Person("张三"); Person pe ...
- Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换
Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换 { "@type":"java.lang.Runti ...
- Java多线程编程核心技术---对象及变量的并发访问(一)
synchronized同步方法 "非线程安全"其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是"脏读",也就是渠道的数据其实是被更改 ...
- java的几种对象(PO,VO,DAO,BO,POJO)解释
java的几种对象(PO,VO,DAO,BO,POJO)解释 一.PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中 ...
- java传递和返回对象
java传递的只是一个引用,一定要注意准确认识在对象传递和赋值时所发生的一切. 事实上,java中的每个对象(除了基本数据类型以外)的标识符都属于指针的一种,但是其使用受到了严格的限制和防范,不仅在编 ...
- JAVA类型信息——Class对象
JAVA类型信息——Class对象 一.RTTI概要 1.类型信息RTTI :即对象和类的信息,例如类的名字.继承的基类.实现的接口等. 2.类型信息的作用:程序员可以在程序运行时发现和使用类型信息. ...
随机推荐
- Interview Tests
1,wpf特点: 1:MVVM模式. 2:数据和视图分离 3:高级的数据模板功能 4:高级数据绑定功能 5:高级动画支持 6:高级图形和3D支持 7:灵活的控件组合 2,依赖属性的原理:Depende ...
- javascript 逻辑操作符
JS按位与(&) 0001 & 0011 --- 0001 只有两个数的值为1时,才返回1 JS按位异或 (^) 0101 (expression1) 1100 (expressi ...
- Node.js 学习笔记
时间:2016-07-07 提前安装好linux CentOs环境,以及相关工具(git,wget,vim……) 1.安装: 目前打算在CentOs上进行操作,网上有教程是旧的地址,这个是搬家后的新地 ...
- 《机电传动控制》PLC仿真
1.红绿灯 经仿真,可以完成所设定的要求.对比普通的红绿灯,知识加了X25和X20的控制,来控制夜间模式 . 2.传送带 经仿真,可以完成所设定的要求. 总结:这两个仿真都是亲自完成,感觉难度有些大. ...
- 1.C语言中的数据类型
1.深入理解 固定内存大小的别名,可以理解为创建变量的模子. PS:变量是存储空间的的别名,在程序中,通过变量来申请并命名存储空间,通过变量名来使用存储空间. 2.分类:基本数据类型构造数据类型 (1 ...
- ASP.NET corrupt assembly “Could not load file or assembly App_Web_*
以下是从overFlow 复制过来的问题 I've read through many of the other questions posted on the same issue, but I s ...
- APP开发:对于IOS APP应用的推广渠道有哪些?
亿合科技了解到,随着移动互联网时代的到来,苹果从2007年进入中国市场,一直备受大众喜爱,手机应用也层出不穷.那么对于那么多的IOS APP应用怎么能获得用户的喜爱呢?于是推广APP应用是需要做的,亿 ...
- 搜索引擎Solr系列(二): Solr6.2.1 从MySql中导入数据
一:建立MySql测试表,如下图: 二:solr导入配置: 1.新建demo core文件夹,并修改managed-schema里面的配置文件建立索引字段: 2.把mysql-connector-j ...
- 关于Java运算中类型自动提升的问题
1.表达式中的自动类型提升: 表达式求值时,Java自动的隐含的将每个byte.short或char操作数提升为int类型,这些类型的包装类型也是可以的. 例如:short s1 = 1; s1 = ...
- 在使用 CryptoAPITransform进行加密时异常要调用Reset()
在使用 CryptoAPITransform进行加密时异常要调用Reset() 通过.net源码能看到Reset()里有 public void Reset() { _depadBuffer = nu ...