面向对象

90 阅读5分钟

面向对象

面向对象 是一种编程思想,其本身与编程语言无关

编程思想是我们在编写程序、分析问题域的时候采用的一种思维方式。

我们在编程基础课,采用的是”面向过程“的编程思想。

结构化编程----面向过程编程

OOA--面向对象分析

OOD---面向对象设计

OOP---面向对象编程

OOT---面向对象测试

  • Java 只是在他的语法设计上引入了面向对象的概念,在语句层面上能够表现面向对象的各个特征
  • C++是第一门在语法中引入OO思想的语言,但是由于它当时的设计还需要兼顾C的特性,导致它并不能算为纯粹的面向对象编程语言。
  • Java是第一门纯面向对象对象编程语言,它的整个设计完全是基于面向对象中所需要用到的概念的。

面向对象

  • 找对象:对象可以是问题域中出现的任何人、事物或者实体,简单点来说就是”东西“;
  • 属性:对象身上有什么值数据
  • 行为,功能:动宾;属性:名词

面向对象设计方案的核心

  • 从问题场景中”找对象“,找出有哪些对象之外,还要找出这些对象有哪些属性、哪些行为。

    • 属性---对象身上的值数据;名词
    • 行为---对象身上的功能;动词或动宾
结论:
  • 万物皆对象
  • 对象因关注而产生
  • 在一个问题域当中我们会找到大量的同类型对象,根据类型进行编码。 这就是“类”的概念。

    • 对象---是实际具体存在的,我们真正要去操作的东西。
    • 类---是通过人脑抽取,是把一系列具有相同属性和行为的对象进行归纳,形成定义
关键点:
  • 类是什么?类就是一种数据类型,这种数据值可以装很多数据值(姓名、年龄、体重、身高......),同时可以定义他们能够做什么事情(行为:吃饭、上课、跑步......)

String[] usernames String[] passwords double[] accounts

新的解决方案:

定义一个类叫做“用户”,然后每个用户里面包含三个属性:username\password\account 多用户的时候: 用户[] allUsers; allUsers[3].用户名 allUsers[1].密码

  • 定义好的类,是不能直接使用的。类是用来产生对象的,具体要用的是用对象。类相当于一个模板,通过这个模板产生出具有相同的属性和相同的对象。

注意:相同属性 指的是都有这个属性,但是值可以不一样。

面向对象情况下,分析和编码的方式的步骤:
  • 从整个问题域当中找对象,包括对象的属性和行为;
  • 编码的时候,先定义类,然后通过类来产生对象,最后使用对象来产生效果。

定义类的语法

创建一个Java文件

public class  类名{
​
    public 类型  属性1;
    public 类型  属性2;
    public 类型  属性3=值;
​
    ......
    //行为
    修饰符 返回类型 方法名(形参列表){
        方法的实现指令
    }
​
}

通过类产生对象的语法

  • 语法: new 类名()

  • 类名 对象名 --- 这句代码不是产生对象,而只产生一个存对象引用的变量空间。

  • 类名 对象名 = new 类名();

    表示这个对象名里面的引用指向new出来的这个对象。 说明:类型是引用数据类型

    Administrator admin=new Administrator();
    Car che=new Car();
    CarOwner owner=new CarOwner();
    

操作对象的语法

对象名通过点操作符来访问它指向的对象的内部信息,包括该对象的属性或方法。

 admin.id=001;
 admin.age=33;
 admin.name="小李";
 admin.workTime=8.5;

销毁对象

用new关键字产生了对象,但对象产生在内存中的具体位置,我们是不知道的,所以我们必须用一个引用变量指向它。然后通过这个引用变量来使用它。

假如有一个对象是没有引用指向的,那么在程序的后续代码中我们将找不到它,也没有办法使用它。这个时候这个对象就没有意义了,这个时候这个对象就会被销毁掉。

对象的销毁在Java当中是不需要程序员用代码去销毁的,而是由JVM(java虚拟机) 自己来做。它有一个非常著名的机制 --- 垃圾回收机制(GC) ,这个机制会随时检查内存,一旦发现某个对象没有引用指向了,那么这个对象就会纳入到它的回收范围中。

这个垃圾回收是自动运行的,它不受程序员的控制。我们不知道垃圾回收是在什么时候发现没有引用指向的对象,我们也不知道它是不是一旦发现就马上回收,这些都由它内部算法决定,你只需要信任即可。

程序员在代码级别对垃圾回收的控制,只有一条指令:System.gc(); 这条指令的任务就是召唤垃圾回收机制,让它来清理一次。很有意思的是,这条被执行的时候是否马上执行垃圾回收,是否马上清理干净,都不一定,还是由GC内部算法决定,只能起到喊它一声的作用。

  • 销毁对象不是由程序员来完成,而是由GC来完成;

  • 没有引用指向的对象会被视为垃圾;

  • GC什么时候回收,回收哪些没有引用指向的对象,都由它自身算法决定;

  • System.gc()方法是用来召唤GC,但是什么时候收,如何收,仍然由GC自己决定。

    总结:

    1、理论概念:类、对象、属性、行为; 2、掌握定义类的语法 3、掌握产生对象的语法---new 4、掌握操作对象的语法---点操作符 5、理论:销毁对象、GC