了解面向对象我们先来看几个示例:
(1) 汽车开发示例:类对象
我们从汽车开发示例可以看出,两种不同的思想
一种是面向过程:是一种思想
一种是面向对象:也是一种思想
(2) 软件开发示例:类和对象
面向对象和面向过程都是软件开发的一种编程思想,要真正的理解一种编程思想,或者说应用在实际的开发设计中,并不是看几本书,听我说几句就能搞定的事情,需要先了解,在实际开发中应用,这样不断的思考分析、积累,从而达到理解。
举个事例,现在我手上接了一个500W的项目,接下来我需要完成这个项目,现在我有两个选择:第一是自己一人开发;第二是组建团队或者说外包。
第一,自己一个人独立开发。
那么我需要做的事情可能就包括了:需求搜集、分析,原型设计,项目架构设计,编码实现,项目测试,项目实施等等。其中每一件事情都必须亲力亲为,感觉心里倒也踏实,不过这个过程可能是这样:
1. 哈哈,接了个单高高兴兴敲代码!!
2. 丫,咋还出bug了呢,纳尼。。。
3. 不会吧,我都调试3个通宵了。。。
4. 糟糕,我要崩溃了,。。。
5. 算了,我想睡一会儿(安息吧!)
第二,组建团队开发
有了自己的团队之后,就可以不用再陪客户喝茶、聊天、吃饭、睡觉,洗脚(售前售后);不用再排异常、找bug、调网络(攻城狮);不用再反复修改设计方案版本(射鸡湿)。那么我现在做什么呢?当然是数钱啦!
其实我现在做的就是管理好我的团队,分配好任务,控制项目进度等,在整个过程中充当指挥者的角色。
上面的两个事例第一种是面向过程的做事方式,第二种是面向对象的做事方式。
(3) 示例:学生管理软件开发分析
设想我们学生信息需要管理的信息需要什么:
① 姓名:
② 年龄:
③ 电话:
④ .......
现在模拟一种场景:现实的世界和虚拟的世界:理解类和对象
① 比如现实生活中:管理学生信息,设想计算机系统如何管理学生信息
1) 设计纸质模板,用于填写学生信息的模板
2) 复制模板:填写具体的学生信息
② 设想计算机系统应该怎么做
1) 应该设计一个模板,用于填写学生信息的模板
2) 复制模板:填写具体的学生信息
现实生活中管理与系统中管理区别
①现实生活中:比如收集学生的情况,如果通过每个人来填写,使用纸质文件保存,不方便,
查找不方便,纸质容丢。
② 系统中管理:数据安全,不容易丢失,保存方法
系统数据基本设计
所以需要做一个系统,我们需要做什么事情:模拟现实社会中现象
1) 先写一个模板--->需要一个类;
2) 然后录入人的信息--->对象;
系统设计类与对象的认识
现实生活中
1) 现实生活中,做一个纸质模板:目标是为了统计某一类事物的数据,录入学生信息模板,主要 为了统计学生信息
理解:学生信息纸质模板,没填写任何数据,描述学生这一类事物!是一个类
2) 现实生活中,复制纸质模板,得到独立的崭新的一份,填写具体的信息,该复制的模板填写了 具体的信息,描述了一个具体的信息
理解:学生纸质模板,填写了具体的信息,描述的是一个具体的学生,是一个对象
① 虚拟世界中
1) 需要个模板,一个类,用来描述一类事物
2) 可以复制该模板,填写具体的信息,用来描述具体的一个事物
② 再次强化类和对象的概念
1) [类]:就是一个类事物:是不具体的:是类
2) [对象]:就是一个具体的学生,是具体的:是对象
(4) 分析java语言设计:需要类和对象
①类和对象的理解
什么是类?
类:是指描述一类事物,或者看成是一个分类,例如人类、车类、星球类, 等等;
什么是对象?
对象:是指具体的个体(也叫实例-instance), 例如马云、王石、老郑、马云的迈巴赫、王石的切诺基、老谭的二八自行车、地球、火星等等。类和对象的关系请看下面的图例:
类【模板】----》【复制模板】对象
java语言世界:万事万物皆对象
java世界,万事万物皆可分类【因为一个具体的对象,必然来自于一类事物】
(5) java语言的设计思想
Java语言设计的思想,希望将现实生活中,对象与对象之间的关系在计算机系统得以体现
构建计算机系统, 用的对象!
总结:面向对象的编程思想
现实世界中,随处可见的一个事物就是对象,对象是事物存在的实体,如人类、书桌、计算机、高楼大厦等。人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象所属于的某一类事物都是由哪些部分组成的。
通常都会将对象划分为两个部分,即动态部分【行为】与静态部分[描述]。
①静态部分:顾名思义就是不能动的部分,这个部分被称为“属性”,任何对象都会具备其自身属性,如一个人,它包括高矮、胖瘦、性别、年龄等属性。
②动态部分:然而具有这些属性的人会执行哪些动作也是一个值得探讨的部分,这个人可以哭泣、微笑、说话、行走,这些是这个人具备的行为(动态部分)。
java语言:也就是设计类—>创建对象--->使用对象