面向对象概论

今天学习了面向对象的概论,并对日常生活中的一些的一些对象进行了实例化,明白了类和对象之间的关系,学会了定义类的方法和方法限定词的使用。
面向对象的三大基本特征是: 封装、继承、多态
封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保护了数据继承是为了重用父类代码,同时为实现多态性作准备多态性是发送消息给某个对象,让该对象自行决定响应何种行为。通过将子类对象引用赋值给超类对象引用变量来实现动态方法调用。

编程概述

面向过程是一种自上而下的程序设计方法,主要思路专注于算法的实现

  1. 过程式的特征是以函数为中心,用函数作为划分程序的基本单位;数据在过程式设计中处于从属的位置
  2. 过程式设计的优点是易于理解和掌握,这种逐步细化问题的设计方法与大多数人的思维方式比较接近
  3. 软件代码的重用性很差,即使重用,也是简单的复制和拷贝,代码数量急剧增加。而不能直接继承和应用

面向对象是一种自下而上的程序设计方法,以数据为中心,类是表现数据的单位,是划分程序的基本单位

  1. 面向对象设计是自下而上的特性,允许开发者从问题的局部开始,在开发过程中逐步加深对系统的理解。需求变化会作用到系统开发本身,形成一种螺旋式的开发方式
  2. 面向对象设计中,类封装了数据,而类的成员函数作为其对外的接口,抽象地描述类,用类将数据和操作这些数据的函数放在一起,这就是面向对象设计方法的本质

对象的引入

造房子的砖头有红色的砖、有方砖、有圆砖,此时现实生活中的各种各样的砖头都可以称作是对象
方砖、圆砖,他们之间头共同点,但也有不同方面,这些不同的地方使得它们不可能是同一种对象,然而砖头是所有种类砖的总成,所有的砖都是由它派生出来的,所以这个砖可以称为是一个类
类就是模板,也可以说类就是创建对象的基地,能产生出很多不同的对象

  1. java语言与其他面向对象语言一样,引入类的概念是用来创建对象的模板,它包含被创建对象的状态描述和方法的定义。java是面向对象语言,它的源文件是由若干个类组成,源文件的扩展名为.java的文本文件
  2. 要学习java编程就必须学会怎样去编写类,即怎样用java的语法去描述一类事物共有的属性和功能。属性通过变量来刻画,功能通过方法来体现,即方法操作属性形成一定的算法来实现一个具体的功能

如何描述现实生活中的事物

对于事物描述通常只关注属性和行为两方面,明确该事物的属性和行为并定义在类中即可

  1. 抽象数据类型
  2. 不要把自定义的类和一般数据类型对立
  3. 不同于int类型:具有方法
    通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。同时,面向对象能有效提高编程的效率,通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统

抽象
抽象是从特定的实例中抽取共同的性质以形成一般化概念的过程

  1. 把众多的事物归纳、划分成类是我们在认识世界时经常采用的方法分类所依据的
  2. 原则是抽象,也就是忽略事物的非本质特征,只注意那些与当前目标有关的本质
  3. 特征找出事物的共性并将具有共同性质的事物划分为同一个类

面向对象的概念

面向对象是一种新兴的程序设计方法或者是一种新的程序设计规范paradigm,其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计

  1. 从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式
  2. 开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域。其应用领域不仅仅是软件,还有计算机体系结构和人工智能等
  3. 面向对象的思想已经涉及到软件开发的各个方面。如面向对象的分析OOA、面向对象的设计OOD以及面向对象的编程实现OOP

OOP使得现实世界中的概念在计算机程序中编程模块,它包括构造程序的特征以及组织数据和算法的机制,面向对象是一种对现实世界理解和抽象的方法。

对象
对象是要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表
示抽象的规则、计划或事件
在现实世界中:是客观世界中的一个实体
在计算机世界中:是一个可标识的存储区域
现实世界中所有的事物都是对象
对象都具有某些特征,并展现某些行为
对象的两个要素
属性于描述对象静态特性(结构特性)的一个数据项, 描述一个人可用姓名、性别、身份证号等属性
方法(也称服务)用于描述对象动态特性(行为特性)的一个操作系列,每个人都具有工作、学习等行为特性
类和对象之间的关系
类是事物的描述

  1. 类是Java程序的核心,它定义了对象的形状和本质,可以用类来创建对象。当使用一个类创建了一个对象时,通常说给出了这个类的一个实例
  2. 类由类声明和类体构成,一般命名方法为:首字母大写,大写字母分词,例如XueSheng
  3. 类包含数据成员(数据、属性)和成员方法(函数)。一般建议数据成员应该是通过函数(方法)访问的
  4. 对象是类的实例,就是应用中定义的某个类的变量,例如Person p=new Person(); p就是对象
  5. 类是和问题域相关的具有相同属性和行为的对象的抽象

消息和方法
对象之间进行通信的结构叫做消息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)类中操作的实现过程叫做方法,一个方法有方法名、返回值、参数、方法体
描述小汽车
只分析需要关注的内容
属性:轮胎数、颜色
行为:启动、加速、巡航行驶、制动
定义类
定义类其实就是在定义类中的成员
类成员:
成员属性;表示当前对象的状态或者用于描述当前对象。例如public int age;
成员方法就是行为,成员方法表示具有的功能或者逻辑,语法:“范围限定词 返回类型(void没有返回值) 方
法名称(参数列表,例如int age, String username)”,例如public void pp(){}
类是组成Java程序的基本要素。它封装了一类对象的状态和方法,是这一类对象的原型
类的修饰字] class 类名称 [extends 父类名称][implements 接口名称列表
变量定义及初始化;
定义类:

public class Car {
    
    
private int num =5;//定义成员属性的同时,设置默认值
private String color;
public void qiDong() {
    
    
System.out.println("Car.qiDong()");
}
public void xunHang() {
    
    
System.out.println("Car.xunHang()");
}
public void zhiDong() {
    
    
System.out.println("Car.zhiDong()");
}
public int getNum() {
    
    
return num;
}
public void setNum(int num) {
    
    
this.num = num;
}
public String getColor() {
    
    
return color;
}
public void setColor(String color) {
    
    
this.color = color;
}
}

如何使用

Car myCart = new Car();//创建对象
//对成员属性进行设置,如果不设置则默认属性值生效
myCart.setColor("红色");
//myCart.setNum(4);
//调用对象中的成员方法
myCart.qiDong();
myCart.xunHang();
myCart.zhiDong();

调用类名称
变量名=new 类名称();
变量名.成员属性
变量名.成员方法
设计与编写类的过程实际上是一个对实体共有属性和行为的一个抽象的过程。
面对的是一个具体个体,为了将研究对象存储在计算机中,所以定义了一个新数据类型Student。定义类的目的就是为了在计算机中存储特定的对象,所以需要创建对应的对象,创建方法和简单类型中定义变量的含义一致。
面向对象和面向过程的区别
面向过程:
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
面向对象:
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
缺点:性能比面向过程低
成员变量和局部变量的区别

public class Student{
    
    
public void who(){
    
    
return name;
   }
private String name;//成员变量---属性
public void eat(){
    
    
int time=123;//局部变量
   }
}

成员变量定义在类中,整个类中都能访问,和具体的定义位置无关
局部变量定义在方法、语句、局部代码块中,只在所属的区域中有效,而且必须是先定义后使用,必须是先赋初值后使用
成员变量存在于堆内存的对象中,堆内存中的对象大小可以任意,并允许在运行时进行调整。所以访问查找的效率比较低
局部变量存在与栈内存的方法中,可以快速定位,但是大小是限定
的成员变量随着对象的创建而存在,随着对象的表示而消失。局部变量随着所属区域的执行而存在,随着所属区域的结束而释放
成员变量都有默认初始化值;局部变量没有默认初始化值

猜你喜欢

转载自blog.csdn.net/Lecheng_/article/details/112548864