推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

JAVA-编程基础-07-面向对象思想

   2023-07-01 网络整理佚名1510
核心提示:JAVA-编程基础-07-面向对象思想比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。扩展就是添加新功能的意思,因此该原则要求在添加新功能时不需要修改代码。符合开闭原则最典型的设计模式是装饰者模式,它可以动态地将责任附加到对象上,而不用去修改类的代码。

利森,v1.0.0,2023.03.26

JAVA-编程基础-07-面向对象思想

文章目录

1. 三大功能包

使用抽象数据类型来封装数据和基于数据的操作,使它们形成一个不可分割的独立实体。 数据被保护在抽象数据类型内部,尽可能隐藏内部细节,只保留一些外部接口使其与外部进行通信。 用户不需要关心对象内部的细节,但是可以通过对象提供的接口来访问对象。

优势:

下面的类封装了姓名、年龄等属性,外界只能通过get()方法获取对象的姓名属性和属性,而无法获取年龄属性,但是年龄属性可以被对象使用工作()方法。

请注意,属性是使用 int 数据类型存储的,封装使得此实现细节对用户不可见。 并且当需要修改属性使用的数据类型时,也可以在不影响客户端代码的情况下完成。

public class Person {
    private String name;
    private int gender;
    private int age;
    public String getName() {
        return name;
    }
    public String getGender() {
        return gender == 0 ? "man" : "woman";
    }
    public void work() {
        if (18 <= age && age <= 50) {
            System.out.println(name + " is working very hard!");
        } else {
            System.out.println(name + " can't work any more!");
        }
    }
}

继承

继承实现了 IS-A 关系。 例如,Cat和是IS-A关系,所以Cat可以继承,从而获得Not的属性和方法。

继承应该遵循里氏替换原则,子类对象必须能够替换所有父类对象。

Cat可以用作,也就是说可以用来引用Cat对象。 指向子类对象的父类引用称为向上转型。

Animal animal = new Cat();

多态性

多态分为编译时多态和运行时多态:

运行时多态具有三个条件:

在下面的代码中,乐器类 () 有两个子类:Wind 和 ,它们都重写了父类的 play() 方法,并在 main() 方法中使用父类引用 Wind 和对象。 通过引用调用play()方法时,会执行实际引用的对象所在类的play()方法,而不是该类的方法。

public class Instrument {
    public void play() {
        System.out.println("Instument is playing...");
    }
}

public class Wind extends Instrument {
    public void play() {
        System.out.println("Wind is playing...");
    }
}

public class Percussion extends Instrument {
    public void play() {
        System.out.println("Percussion is playing...");
    }
}

public class Music {
    public static void main(String[] args) {
        List<Instrument> instruments = new ArrayList<>();
        instruments.add(new Wind());
        instruments.add(new Percussion());
        for(Instrument instrument : instruments) {
            instrument.play();
        }
    }
}

Wind is playing...
Percussion is playing...

二、类图

以下类图用于绘制,更多语法和用法请参考:。

泛化关系()

用于描述继承关系,在Java中使用关键字。

@startuml
title Generalization
class Vihical
class Car
class Trunck
Vihical <|-- Car
Vihical <|-- Trunck
@enduml

实现关系()

要实现接口,请使用 Java 中的关键字。

@startuml
title Realization
interface MoveBehavior
class Fly
class Run
MoveBehavior <|.. Fly
MoveBehavior <|.. Run
@enduml

聚合关系()

表示整体是由部分组成的,但整体与部分并不强依赖,整体不存在,部分仍然存在。

@startuml
title Aggregation
class Computer
class Keyboard
class Mouse
class Screen
Computer o-- Keyboard
Computer o-- Mouse
Computer o-- Screen
@enduml

组成关系()

与聚合不同的是,组合中的整体和部分是强依赖的,如果整体不存在,那么部分也不存在。 比如公司和部门,没有部门就没有公司。 但公司和员工属于聚合关系,因为公司还没有员工。

@startuml
title Composition
class Company
class DepartmentA
class DepartmentB
Company *-- DepartmentA
Company *-- DepartmentB
@enduml

连接关系()

表明不同类型的对象之间存在关联。 这是一种静态关系,与运行进程的状态无关,一开始就可以确定。 因此,也可以用一对一、多对一、多对多关系来表示。 例如,学生和学校是关联关系。 一所学校可以有很多学生,但一个学生只能属于一所学校。 因此,这是一个多对一的关系,在操作开始之前就可以确定。

@startuml
title Association
class School
class Student
School "1" - "n" Student
@enduml

依赖关系()

与关联不同,依赖关系在运行时起作用。 A类和B类是三种主要形式的依赖关系:

@startuml
title Dependency
class Vihicle {
    move(MoveBehavior)
}
interface MoveBehavior {
    move()
}
note "MoveBehavior.move()" as N
Vihicle ..> MoveBehavior
Vihicle .. N
@enduml

3.设计原则SOLID缩写和全拼中文翻译

建议零售价

单一责任原则

OCP

公开赛

开闭原则

LSP

里氏替换原则

互联网服务供应商

接口分离原则

依赖倒置原则

1. 单一职责原则

修改一个类应该只有一个原因。

换句话说,让一个类只负责一件事。 当这个类需要做的事情太多的时候,就需要分解这个类。

如果一个类承担了太多的职责,就相当于将这些职责耦合在一起,而一个职责的改变可能会削弱这个类完成其他职责的能力。

2、开放与封闭原则

类应该对扩展开放,对修改关闭。

扩展意味着增加新的功能,所以这个原则要求增加新功能时不需要修改代码。

最典型的符合开闭原则的设计模式是装饰器模式,它可以动态地将职责附加到对象上,而无需修改类的代码。

3.里氏替换原理

子类对象必须能够替换所有超类对象。

继承是一种IS-A关系,子类需要能够像父类一样使用,并且需要比父类更特殊。

如果不满足这个原则,每个子类的行为就会有很大差异,增加继承系统的复杂性。

4. 接口分离原则

不应强迫客户依赖他们不使用的方法。

因此,使用多个专用接口比使用单个通用接口更好。

5. 依赖倒置原则

高层模块不应该依赖于低层模块,两者都应该依赖于抽象; 抽象不应该依赖于细节,细节应该依赖于抽象。

高层模块包含应用程序中重要的策略选择和业务模块。 如果高层模块依赖于低层模块,那么低层模块的改变会直接影响高层模块,从而迫使高层模块也需要改变。

对抽象的依赖意味着:

其他共同原则

除了上述经典原则外,实际开发中还有以下常见的设计原则。

速记全拼中文翻译

细节层次

法则

德墨忒耳定律

反应蛋白

重用

合成再利用原则

中共

共同封闭原则

树液

稳定的抽象原则

社会发展计划

稳定依赖原则

1. 德墨忒耳定律

迪米特定律也称为最少知识原则(Least,缩写为LKP),意思是一个对象应该对其他对象了解尽可能少,并且不应该与陌生人交谈。

2. 合成与复用原则

尝试使用对象组合而不是继承来达到重用的目的。

3. 共同封闭原则

一起修改的类应该分组在一起(在同一个包中)。 如果应用程序中的代码必须更改,我们希望所有更改都发生在一个包中(修改关闭),而不是分布在多个包中。

4.稳定的抽象原则

最稳定的包应该是最抽象的包,不稳定的包应该是具体的包,即一个包的抽象程度与其稳定性成正比。

5、稳定依赖原则

包之间的依赖关系应该是稳定的、依赖的,并且包所依赖的包应该比它本身更稳定。

参考

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON