目录
知识框架
🏀面向对象理论
❤️面向过程和面向对象有什么区别?
⭐️从语言方面出发:
(1)对于C语言来说,是完全面向过程的。
(2)对于C++语言来说,是一半面向过程,一半是面向对象(C++是半面向对象的)
(3)对于Java语言来说,是完全面向对象的。
🥅面向过程(OP)
❤️什么是面向过程的开发方式?
⭐️面向过程的开发方式主要的特点是:
(1) 注重步骤,注重的是实现这个功能的步骤
第一步干什么
第二步干什么
….
(2) 面向过程也注重实现功能的因果关系
因为A所以B
因为B所以C
因为C所以D
…..
⭐️面向过程中没有对象的概念。只是实现这个功能的步骤以及因果关系。
❤️面向过程有什么缺点(耦合度高,扩展力差)
⭐️面向过程最主要是每一步与每一步的因果关系,其中A步骤因果关系到B步骤,A和B联合起来形成一个子模块,子模块和子模块之间又因为因果关系结合在一起,假设其中任何一个因果关系出现问题(错误),此时整个系统的运转都会出现问题。⭐️代码和代码之间的耦合度太高,扩展力太差!
⭐️螺丝螺母拧在一起:耦合度高吗?
这是耦合度低的,因为螺栓螺母可以再拧开。(它们之间是有接口的)
⭐️螺栓螺母拧在一起之后,再用焊条焊接在一起,耦合度高吗?
这个耦合度就很高了,耦合度就是黏连程度,往往耦合度高的扩展力就差。
❤️面向过程有什么优点(快速开发)
⭐️对于小型项目(功能),采用面向过程的方式进行开发,效率较高。
⭐️不需要前期进行对象的提取,模型的建立,采用面向过程方式可以直接开始干活。一上来直接写代码,编写因果关系;从而实现功能。
❤️采用面向过程的方式开发一台计算机会是怎样?
⭐️这台计算机将没有任何一个部件,所有的都是融合在一起的。
⭐️这台计算机是一个实心儿的,没有部件的;一体机。(没有对象的概念)
⭐️假设这台一体机的任何一个“部位”出问题,整个计算机就不能用了,必须扔掉了。
❤️采用面向对象的方式开发一台计算机会是怎样?
⭐️里面的部件都是一个对象;例如: 内存条是一个对象、主板是一个对象、CPU是一个对象、硬盘是一个对象等,然后这些对象组装在一起,形成一台计算机。
⭐️假设有一个部件CPU坏了,我们可以将CPU拆下来,换一个新的;就可以继续使用
🥅面向对象(OO)
❤️什么是面向对象的开发方式?
⭐️采用面向对象的方式进行开发,更符合人类的思维方式。(面向对象成为主流的原因)
⭐️人类就是以“对象”的方式去认识世界的。 所以面向对象更容易让我们接受。
❤️面向对象就是将现实世界分割成不同的单元,然后每一个单元都实现成对象,然后给一个环境驱动一下,让各个对象之间协作起来形成一个系统。
⭐️例如:对象“张三”、对象“香烟”、对象“打火机”、对象“吸烟的场所”;然后将以上的4个对象组合在一起,就可以模拟一个人的抽烟场景。
⭐️其中“张三”对象可以更换为“李四”、其中“香烟”也可以更换品牌、其中“打火机”也可以更换、其中“吸烟的场所”也可以更换。
❤️采用面向对象的方式进行开发:耦合度低,扩展力强
❤️一个经典案例区分一下面向对象和面向过程?
⭐️蛋炒饭:是面向过程的
(1)鸡蛋和米饭完全混合在一起。没有独立对象的概念。
(2)假设客户提出新需求:我只想吃蛋炒饭中的米饭,怎么办?
(3)客户提出需求,软件开发者必须满足这个需求;这个软件的扩展很难因为耦合度太高了!⭐️盖饭:是面向对象的
(1)鱼香肉丝是一道菜,可以看成一个独立的对象;米饭可以看成一个独立的对象。
(2)两个对象准备好之后,只要有一个动作,叫做:“盖”,这样两个对象就组合在一起了。
(3) 假设客户提出新需求:我不想吃鱼香肉丝盖饭,想吃西红柿鸡蛋盖饭;这个扩展就很轻松了。直接把“鱼香肉丝”对象换成“西红柿鸡蛋”对象。
❤️总结:
⭐️面向过程主要关注的是:实现步骤以及整个过程。
⭐️面向对象主要关注的是:对象A,对象B,对象C,然后对象ABC组合,或者CBA组合…..
🥅面向对象三个术语和三大特征
面向对象的三大术语(OO) : OOA、OOD、OOP
①OOA:面向对象分析
②OOD:面向对象设计
③OOP:面向对象编程
⭐️整个软件开发的过程,都是采用OO进行贯穿的。实现一个软件的过程:分析(A) –> 设计(D) –> 编程(P);⭐️leader 领导/经理/组长、team 团队、PM 项目经理(整个项目的监管人)Project Manager
面向对象的 三大特征(OO) :封装、继承、多态
⭐️任何一个面向对象的编程语言都包括这三个特征;例如:python也有封装、继承、多态。java也有封装、继承、多态;接下来我们就会学习封装、继承和多态!
🏀类和对象
❤️面向对象当中最主要“一词”是:对象。
⭐️什么是类?
(1)类实际上在现实世界当中是不存在的,是一个抽象的概念,是一个模板。是我们人类大脑进行“思考、总结、抽象”的一个结果。
(2)类本质上是现实世界当中某些事物具有共同特征,将这些共同特征提取出来形成的概念就是一个“类”,“类”就是一个模板。例如:明星就是一个类
⭐️什么是对象?
(1)对象是实际存在的个体。(真实存在的个体);例如: 宋小宝就是一个对象、姚明就是一个对象、刘德华就是一个对象
(2)宋小宝、姚明、刘德华这3个对象都属于“明星”这个类!
⭐️在java语言中,要想得到“对象”,必须先定义“类”,“对象”是通过“类”实例化得到的
①类就是一个模板,类中描述的是所有对象的“共同特征信息”。②对象就是通过类创建出的个体。
⭐️几个术语:
(1)类:不存在的,人类大脑思考总结一个模板(这个模板当中描述了共同特征)
(2)对象:实际存在的个体。
(3)实例:对象还有另一个名字叫做实例。
(4)实例化:通过类这个模板创建对象的过程,叫做:实例化。
(5)抽象:多个对象具有共同特征,进行思考总结抽取共同特征的过程。
⭐️总结:类 –【实例化】–> 对象(实例)
对象 –【抽象】–> 类
⭐️类是一个模板,是描述共同特征的一个模板,那么共同特征包括什么呢?
例如:张三对象:
名字:张三
身高:165cm
打篮球:非专业的
学习:考试80分李四对象:
名字:李四
身高:240cm
打篮球:NBA专业球员
学习:考试100分⭐️共同特征包括哪些?
名字、身高都属于名词(状态特征);状态对应类中的属性
打篮球、学习都属于动词(动作特征);动作对应类中的方法
⭐️类 = 属性 + 方法;属性来源于:状态;方法来源于:动作
public class 明星类{
//属性-->状态,多见于名词
名字属性;
身高属性;
//方法-->动作,多见于动词
打篮球方法(){
}
学习方法(){
}
}
🥅类的定义
❤️怎么定义一个类,语法格式是什么?
[修饰符列表] class 类名 {
//类体 = 属性 + 方法
// 属性在代码上以“变量”的形式存在(描述状态)
// 方法描述动作/行为
}
//-------------注意:修饰符列表可以省略。
❤️为什么属性是“以”变量的形式存在的?
答:是因为属性对应的是“数据”,数据在程序中只能放到变量中。
假设我们要描述一个学生:
学生包括哪些属性:
学号: 110
姓名:"张三"
性别:'男' (true/false)
住址:"深圳宝安区"
⭐️结论:属性其实就是变量
⭐️变量根据出现位置进行划分:
(1)方法体当中声明的变量:局部变量。
(2)方法体外声明的变量:成员变量。(这里的成员变量就是“属性”)
❤️观察“学生对象1”和“学生对象2”的共同特征,然后再利用java语言将该“学生类”表述/表达出来。(这里只表达属性,不表达方法)
⭐️观察学生对象的共同特征(只观察属性,属性是成员变量);有哪些共同特征:
学号:采用int类型
姓名:采用String类型
年龄:采用int类型
性别:采用char或者boolean类型
住址:采用String类型
⭐️创建一个学生类XueSheng
public class XueSheng{
//--------------属性(成员变量)
// 学号
int num;
// 姓名
String name;
// 年龄
int age;
// 性别
boolean sex;
// 住址
String addr;
}
⭐️变量特点:必须先声明,再赋值,才能访问。成员变量可以先不手动赋值!XueSheng既是一个类名,同时又是一个“类型名”,属于引用数据类型。
⭐️创建一个学生类XueShengTest
(1)数据类型包括两种:
基本数据类型:byte short int long float double boolean char
引用数据类型:String、XueSheng…..
(2) java中所有的“类”都属于引用数据类型。
public class XueShengTest{
public static void main(String[] args){
int i = 100;
System.out.println("i = " + i);
// 在这里可以访问XueSheng类吗?当然可以。
// 创建对象的语法:new 类名();类是模板,通过一个类,是可以创建N多个对象的。
//new是一个运算符。专门负责对象的创建。
//1.
int i = 100;
// i是变量名
// int是变量的数据类型
// 100是具体的数据。
XueSheng s1 = new XueSheng();
// s1是变量名(s1不能叫做对象,s1只是一个变量名字)
// XueSheng是变量s1的数据类型(引用数据类型)
new XueSheng(); //这是一个对象(学生类创建出来的学生对象。)
//2.
XueSheng s1 = new XueSheng(); // 和 int i = 10;一个道理。
//3. 再通过该类创建一个全新的对象
XueSheng s2 = new XueSheng();
//4. 再创建一个
XueSheng xsh = new XueSheng();
// 以上的这个程序就相当于通过XueSheng类实例化了3个XueSheng对象。
// 创建对象的个数没有限制,可以随意。只要有模板类就行。
// 3个对象都属于学生类型。
}
}
❤️例1:创建学生类并初始化打印
⭐️定义Stu类
public class Stu{
String name;
int age;
char sex;
}
⭐️定义Stu01类,并初始化打印
public class Stu01{
public static void main(String[] args){
Stu s = new Stu();
//根据类创建对象
s.name = "张三";
System.out.println(s.name);
s.age = 18;
System.out.println(s.age);
s.sex = '男';
System.out.println(s.sex);
}
}
🥅编译的过程
❤️关于编译的过程:按说应该先编译XueSheng.java,然后再编译XueShengTest.java;但是对于编译器来说,编译XueShengTest.java文件的时候,会自动找XueSheng.class,如果没有,会自动编译XueSheng.java文件,生成XueSheng.class文件。
⭐️第一种方式:
javac XueSheng.java
javac XueShengTest.java
⭐️第二种方式:
javac XueShengTest.java
⭐️第三种方式:
javac *.java❤️怎么完成对象创建的呢?
类名 变量名 = new 类名();这样就完成了对象的创建
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/128503.html