前文:
世界是由上面组成的呢?化学家可能会说:"世界是由分子,原子,离子等这些化学物质组成的,"画家可能会说:"世界是由不同的颜色组成",不同的人不同的回答,但是如果您是一个分类学家,你会说:"世界由不同的类别的事物组成".
其实这本身就是一个抽象的问题,物以类聚,所以可以说世界是由不同的类别的事物组成,比如:世界是由动物,植物.人.物品.和名胜古迹等等组成.而动物由分成脊椎动物和无颈椎动物,颈椎动物又分成哺乳类,鱼类,爬行类.两栖类,爬行类又可以分成有足类无足类......就这样可以继续分下去.当提到某个分类时,就可以找到该属性该分类的一个具体事物。列如:乌龟就属于爬行动物类的有足类,人就属于动物类里面的人类。当我们提到这些具体的事物的时候,就会在脑海里浮现出他们的形象。这些现实世界中客观存在的事物就称之为对象。而在java 的世界中:“万物皆对象”。
什么是面向对象程序设计:(Obje Oriented Prongranmming Language OOPL)
面向对象程序设计,英文缩写为OOP,面向对象程序设计是一个里程碑,Alan Kay因为设计了世界上第一个面向对象语言Smalltalk而获得图灵奖。JAVA之父James Gosling结合Internet背景设计了完全面向对象的java语言,所以说java是一种纯面向对象语言.
在java中什么是对象?
对象:即是用来描述客观事物的一个实体,也可以说对象就是类的实例,实实在在存在的个体,它是由一组属性(静态的特征,)和方法(动态的行为构成)
举例:人( person)
而人又具备以下等特征:
比如: 姓名(name), 年龄(age), 性别(sex)...
同时人又具备比如以下等行为:
如: 学习( study), 吃饭( eat), 睡觉( sleep )在java中什么是类?
类:就是对现实生活中事物的描述,描述事物也就是在描述事物的特征(属性),和行为(方法).所以类也就是对象的类型,类定义了对象将会拥有的特征(属性)和行为(方法),
在Java中什么是属性?
属性:就是静态的值,它是用来描述对象静态特征的一个数据项,如人类中有一个属性是姓名,也就说对象所拥有的静态的特征,在类中表示称之为类的属性
什么是类的方法?
对象所执行的操作称之为方法,而方法是用来描述对象动态的行为.或所具备的功能.如人类,人类具有吃喝拉撒的行为,也可以说人类具备吃喝拉撒的功能.
为什么要定义类?
根据需求,在以后的开发过程中就是在找对象.,没有就要创建一个对象.,事实上,定义类就是抽取同类实体的共性,自定义的有一个数据类型:如"宠物类","狗类""猫类".等等
面向对象的特点:
找对象,建立对象.使用对象.维护对象关系
对象必须具备的条件:
属性和方法
类与对象的关系:
就是抽象与具体的关系,类是由多个对象进行综合抽象的结果.是实体对象的概念的模型.而对象就是一个类的实体,是实实在在存在是一个个体.
类与对象的命名规范:
①:类名首字母大写.(且尽量使用完整的单词,避免使用缩写)'
②:方法和属性首字母必须小写.后面每个单词首字母大写.
③:定义类使用帕斯卡(Pascal)命名法
举例:
如何创建类和使用对象;
举例: //定义一个人类
public class Person{ //定义一个人类
System.out.println("我叫"+name+"我今年"+age+"岁,我是一个:"+sex+"我在吃饭");
System.out.println("我叫"+name+"我今年"+age+"岁,我是一个:"+sex+"我在睡觉");
Person person2 = new Person();
类的作用就是创建对象,由类生成对象.称之为类的实例化过程,一个实例也就是一个对象,而一个类可以生成多个对象.就好比人类,只是一个类,当我说人.你并不知这个人类是谁,而当我具体化其姓名.年龄.性别你就知道这个人具体的是指向谁
语法: 类名 对象名 = new 类名();
如 Person person = new Person ();
面向对象的上基本特征:
①: 封装(encapsulation)
②:继承(inheritance)
③:多态(polymorphism)
面向对象的优点;
①:与人类思维习惯一致: 面向对象的思维方式从人类考虑问题的角度出发,把人类解决问题的思维过程转变成程序能够理解的过程,面向对象过程设计能够让我们使用"类"来模拟现实世界中抽象的概念,用"对象"来模拟现实世界的实体.从而用计算机解决现实问题.
②;信息隐藏:提高了程序的可维护性和安全性.封装实现了模块化和信息隐藏,即将类的属性和行为进行封装在类中,这保证了对他们修改不会影响到其他对象.有利于程序的维护.同时封装使得在对象外部不能随便访问对象的属性和方法,避免了外部错误对他的影响.提高了程序的安全性.
③:提高了程序的可重用性:一个类可以创建多个对象.,增加了重用性,即将多处需要或其他的对象共同的行为单独写成一个方法,而在下次某个对象需要此方法时直接调用该方法即可,不需要重新在进行编写重复的代码块,从而达到了重用.
面向对象思想与面向过程思想的区别:
面向过程:强调的是每一个功能的步骤(以步骤为单位,一步一步完成某一个具体事情)
面向对象:将功能进行封装.强调具备功能的对象.(以对象为单位.通过调度组合不同的对象来完成某一件事情.)
举例
洗衣服:
面向过程:把衣服脱下--找一个盆--放点洗衣粉--加点水--把衣服扔进去--搓一搓--清洗衣服--拧干--晾起来
面向对象:把衣服脱下--打开全自动洗衣机--扔进去--一键即可--晾起来
买电脑:
面向过程:我的了解电脑--了解我自己的需求--找对应的参数信息--去中关村买电脑--讨价还价--买回电脑
面向对象:我知道我要买电脑 -- 找人去给我买 -- 就买回来了
把大象装进冰箱: 面向过程:打开冰箱门>把大象塞进去>关上冰箱门
动作有哪些呢?A:打开冰箱门B:装进大象 C:关闭冰箱门
面向对象的思想特点
A:是一种更符合我们思想习惯的思想
B:可以将复杂的事情简单化
C:将我们从执行者变成了指挥者
代码体现;
面向过程:
class Demo {public static void main(String[] args) {
System.out.println("打开冰箱门");
//打开冰箱门的东西,我现在仅仅是为了演示,就写了一个输出语句
//其实,它可能需要做很多操作。
//这个时候代码就比较多一些了
//假设我要多次打开冰箱门,
//代码一多,每次都写一遍,麻烦不
//我们就应该用方法改进
System.out.println("装进大象");
System.out.println("关闭冰箱门");
}
}
面向对象:
public class Elephants{//创建大象类public static void showoPen() {//定义打开冰箱门的方法
System.out.println("打开冰箱门");
}
public static void showIn() {//定义装进大象的方法
System.out.println("装进大象");
}
public static void showClose() {//定义关闭冰箱门的方法
System.out.println("关闭冰箱门");
}
}
public class TestElephants{ //测试类:
public static void main(String[] args) {
//写了方法以后,调用就改变了
Elephants elephants = new Elephants();
Elephants.showIn();
Elephants.showClose();
面向对象:
我们怎么才能更符合面向对象思想呢?
A:有哪些类呢?
B:每个类有哪些东西呢?
C:类与类直接的关系是什么呢?
把大象装进冰箱的分析? (如何分析有哪些类呢?UML。名词提取法。)
A:有哪些类呢?
大象
冰箱
Test
B:每个类有哪些东西呢?
大象:
进去
冰箱:
开门
关门
Test:
main方法
C:类与类直接的关系是什么呢?
TestElephants中使用大象和冰箱类的功能。
代码体现:
public class Elephants {
public static void showIn() {
System.out.println("装进大象");
}
}
public class freezer {
public static void showoPen() {
System.out.println("打开冰箱门");
}
public static void showClose {
System.out.println("关闭冰箱门");
}
}
public class Test {
public static void main(String[] args) {
冰箱调用开门
大象调用进去
冰箱调用关门
}
}
4:开发,设计,特征
面向对象开发
就是不断的创建对象,使用对象,指挥对象做事情。
面向对象设计
其实就是在管理和维护对象之间的关系。