【原创】面向对象思想入门(示范语言:Java)
来源:互联网 发布:flame软件前景 编辑:程序博客网 时间:2024/05/17 22:00
一:概述
随着电脑的问世,编程语言也随之诞生。编程语言也有着从不成熟变得成熟的发展历程。语法,或格式上的发展也好;性能,效率的发展也好;编程思想的改变是最革命性的改变。从最初的面向过程到现在优秀的面向对象,编程语言已经经历很久的坎坷。现在,我们来开始学习使用最广的,最方便的编程思想:面向对象思想。
二:从谓语到主语
早期的编程语言是以面向过程(Procedure Oriented Programming)的思想作为程序的设计模式的。顾名思义,面向过程思想是以过程为中心,将一件事情分解成多个小的动作/功能实现的,程序员思考的问题是“做什么”。比方说:①起床;②穿衣服;③刷牙、洗脸;④吃早餐;⑤离开家。“去上班”这件事情,被分解成多个过程。在程序当中,一个这样的过程对应的是一个函数。通过函数的互相调用,来达到我们的目的:
wakeUp(me); //起床(我)wearClothes(me, suit); //穿衣服(我,西装)brushTeeth(me, egg); //刷牙(我,煎鸡蛋)eatBreakfast(me, food); //吃早餐(我,食物)leave(me,home); //离开家(我,家)
很明显,动词在前。不过,貌似这样也没有什么问题。但是像这样的函数一多了,人们就开始思考:起床、穿衣服、刷牙... 这类的动作,难道都不是人的动作?我们可不可以把“我”提取出来,用“我”调用这些动作;而非动作调用“我”呢?
me.wakeUp(); //我.起床me.wearClothes(suit); //我.穿(西服)me.brushTeeth(teethbrush); //我.刷牙(牙刷)me.eatBreakfast(egg); //我.吃(煎鸡蛋)me.leave(home); //我.离开(家)
再来看现在的程序。我把“我”提取出来,通过“我”来调用“我”的行为。难道这样不更符合我们的思考方式?我们平时说话,难道不都是“主语 谓语 宾语”吗?像这样注重于名词、事物,而非动词、功能的程序设计思想,就叫做面向对象思想(ObjectOrientedProgramming)。在实际程序设计当中,这些动词,对应的是方法。
三:我们的属性:字段
世界万物都可以被分成两个部分:属性以及动作。关于动作,我们已经通过OOP的方法实现了。属性,可以理解为一个人的身高、体重、年龄、名称等。既然“我”可以拥有行为,“我”也可以拥有这些属性。
String firstName; //字符串 名String lastName; //字符串 姓int age; //整数 年龄int height; //整数 身高 int weight; //整数 体重
很显然,每个人都有自己特有的属性。我们可以在获得对象之后,对这个对象的属性进行赋值:
me.firstName = "明";me.lastName = "李";me.age = 18;me.height = 178;me.weight = 60;
在OOP语言当中,像这样用于表示对象的属性的数据,叫做字段。
好的,现在我有了我的行为,也有了我的属性。紧接着又有了一个新的问题:我的邻居也有这些行为、属性;我的家人也有这些行为、属性。难道我还需要给每一个人定义行为、属性吗?这里,我们介绍一个新概念:类。
四:类
既然发现我有这些行为和属性;你也有这些行为和属性。看上去上帝使用同一个模子把我们刻出来的啊!在OOP当中,我们也能有一个类似于模子或者图纸的东西,把所有的行为和属性定义在这里面。这样大家就自然有这些行为和属性了,不需要逐个去定义。在OOP语言当中,这个类似于模子或图纸的东西,就是类。
本人使用Java作为示范语言,写一个人类:
class Human { // 定义字段 String firstName; // 字符串 名 String lastName; // 字符串 姓 int age; // 整数 年龄 int height; // 整数 身高 int weight; // 整数 体重 // 定义方法 void wakeUp() { // some codes } void wearClothes() { // some codes } void brushTeeth() { // some codes } void eatBreakfast() { // some codes } void leave() { // some codes }}
正是我们之前写的属性和行为才构成了一个人,因此我们把这两个部分放在一个类当中。只要是这个类的产物,都拥有这个类里的东西。这样就简化了了一个一个定义的麻烦。
五:类与对象
既然咱们的图纸已经定义好了,我们来通过这个图纸造一个人吧:
Human me = new Human();
在上述代码中,通过实例化的语法,使用Human这个图纸生产出了“我”。此时,“我”就具有了人的特点。我有姓名年龄,有起床吃饭。我就可以使用“me”来调用字段、方法。
切记:不能说一个人就代表全人类。“me”是产品不是图纸。“我”只是人类的一份子罢了。可见,类仅仅是一个较为抽象的描述;对象是这个抽象的描述实实在在的事物。
六:总结
通过前面的描述,读者应该对面向对象以及面向过程有一个较为清晰的了解了。那么为什么要使用面向对象呢?有什么好处呢?
- 面向对象思想把主语放在前面,符合我们的思考方式;
- 复用性强。我可以直接使用之前定义过的类,new出来一个新的对象;
- 易维护、更新。只需要在原本的类上稍作改动;
最后再把我们学习的概念整理一下:
- 方法:用于描述对象的行为,例如吃饭、穿衣服等;
- 字段:用于描述对象的属性,例如姓名、年龄等;
- 类:一个抽象的图纸,封装方法和字段;
- 对象/实例:通过抽象的图纸造出来的实实在在的事物。这个事物具备类中的字段、方法。
- 【原创】面向对象思想入门(示范语言:Java)
- java面向对象思想
- JAVA面向对象思想
- JAVA面向对象思想
- JAVA面向对象思想
- java 面向对象思想
- java面向对象思想
- java面向对象思想
- Java面向对象思想
- Java面向对象思想
- Java面向对象思想
- Java面向对象思想
- java面向对象思想
- java从入门到弃坑之面向对象思想
- JAVA基础(二)面向对象思想
- Java基础--------面向对象思想(1)
- java语言学习002_面向对象编程思想
- JAVA菜鸟入门篇 - 类、面向对象思想和内存分析(九)
- Apache Ant 实现自动化部署
- 继承(Java)
- border制作带箭头的提示框等好看的效果
- HDU 5596
- Ogre:Animation(Ogre中的动画)
- 【原创】面向对象思想入门(示范语言:Java)
- HTML5中<meta>标签的学习
- 贪吃蛇
- Windows Form线程同步
- vc++ win32项目添加文本编辑框、静态文本、按钮、Richedit等控件
- hdu5597GTW likes function 欧拉函数
- 文章标题
- 使用POI读取电话号码cell时问题
- Growth Hacking背后,数据分析平台的架构调整