学习高校课程-软件设计模式-OOP 和 UML 类图 OOP 与 Java(lec1)
Lecture 1:OOP and UML Class DiagramsOOP with Java
OOP 和 UML 类图 OOP 与 Java
Object-Oriented Programming 面向对象编程

Class Hierarchies 类层次结构
Superclass and subclass
超类和子类

Pillars of Object-Oriented Programming 面向对象编程的支柱
- Abstraction
– Modelling attributes and behaviors of real objects, in specific contexts
抽象——对真实对象的属性和行为进行建模,具体来说

Encapsulation
– Hiding parts of an object’s states and behaviors from others, and exposing a limited set of interfaces
– public, private, and protected
– Interfaces and abstract classes
封装
— 隐藏对象的部分内容和来自他人的状态和行为,并公开一组有限的接口
– 公共、私有和受保护
– 接口和抽象类Inheritance
– Main benefit: code reuse
继承
— 主要好处:代码重用Polymorphism
– Performing an action in many forms
– A mechanism for detecting the real class of an object and call its implementation
多态性
多种形式执行一个动作
一种检测对象的真实类并调用其实现方法的机制

OOP with Java: Declaring Classes and Creating Objects Java 的 OOP:声明类和创建对象
Class declaration
类声明

Creating objects
创建对象- Declaration, instantiation, initialization
声明、实例化、初始化

- The reference returned by the new operator does not have to be assigned to a variable
new 运算符返回的引用不必分配给变量
- Declaration, instantiation, initialization
OOP with Java: Access Control Java 的 OOP:访问控制
- At the top level
在顶层
– public, or package-private (no explicit modifier)
公共或包私有(无显式修饰符) - At the member level
在成员级别
– public, private, protected, or package-private (no explicit modifier)
public、private、protected 或 package-private(无显式修饰符)
OOP with Java: Inheritance Java 中的 OOP:继承
Classes can be derived from other classes, inheriting fields and methods
类可以从其他类派生,继承字段和方法Definitions
定义
– Subclass (derived class/extended class/child class)
– Superclass (base class/parent class)
– 子类(派生类/扩展类/子类)
– 超类(基类/父类)Every class has one and only one direct superclass (single inheritance)
每个类都有一个且仅有一个直接超类(单继承)
– Excepting Object, which has no superclass
除了Object,它没有超类A subclass inherits all the members (fields, methods, and nested classes) from its superclass
子类继承其超类的所有成员(字段、方法和嵌套类)
OOP with Java: What You Can Do in a Subclass Java 的 OOP:在子类中可以做什么
Use the inherited members as is, replace them, hide them, or supplement them
按原样使用继承的成员、替换它们、隐藏它们或补充它们
- Declare a field in the subclass with the same name as the one in the superclass, thus hiding it (NOT recommended)
– 在子类中声明一个与超类中的字段同名的字段,从而隐藏它(不推荐) - Write a new instance method in the subclass that has the same signature as the one in the superclass, thus overriding it
– 在子类中编写一个新的实例方法,其签名与超类中的字段相同,从而覆盖它 - Write a new static method in the subclass that has the same signature as the one in the superclass, thus hiding it
–在子类中编写一个新的静态方法,该方法与超类中的静态方法具有相同的签名,从而隐藏它 - Write a subclass constructor that invokes the constructor of the superclass
– 编写一个调用超类构造函数的子类构造函数
How about private members in a superclass?
OOP with Java: Abstract and Final Methods/Classes Java 的 OOP:抽象和最终方法/类
- An abstract class is a class declared abstract: it may or may not include abstract methods
抽象类是声明为抽象的类:它可能包含也可能不包含抽象方法 - An abstract method is a method declared without an implementation
抽象方法是声明但没有实现的方法 - Final methods and classes
最终方法和类
Methods called from constructors should generally be declared final
– 从构造函数调用的方法通常应声明为final
OOP with Java: Interfaces Java 的 OOP:接口
- Interfaces are contracts
接口是契约 - A reference type, containing only constants, method signatures,default methods, static methods, and nested types
引用类型,仅包含常量、方法签名、默认方法、静态方法和嵌套类型 - Cannot be instantiated
无法实例化
– They can only be implemented by classes or extended by other interfaces
– 它们只能由类实现或由其他接口扩展 - Consisting of modifiers, keyword, interface name, a comma-separated list of parent interfaces (if any), and the interface body
由修饰符、关键字、接口名称、以逗号分隔的父接口列表(如果有)和接口主体组成 - Interface body can contain abstract methods, default methods,and static methods
接口体可以包含抽象方法、默认方法和静态方法
OOP with Java: Implementing and Using Interfaces 使用 Java 进行 OOP:实现和使用接口
- Include an implements clause in the class declaration
在类声明中包含 implements 子句
– Your class can implement more than one interface
– 你的类可以实现多个接口 - If you define a reference variable whose type is an interface,any object you assign to it must be an instance of a class that implements the interface
如果定义类型为接口的引用变量,则分配给它的任何对象都必须是实现该接口的类的实例
OOP with Java: Abstract Classes vs. Interfaces Java 中的 OOP:抽象类与接口
Consider using abstract classes when
考虑使用抽象类
– You want to share code among several closely related classes
– 您希望在几个紧密相关的类之间共享代码
– You expect that classes extending the abstract class have many common methods or fields, or require access modifiers other than public
– 您希望扩展抽象类的类具有许多通用方法或字段,或者需要除 public 之外的访问修饰符
– You want to declare non-static or non-final fields
— 您想要声明非静态或非最终字段Consider using interfaces when
考虑使用接口
– You expect that unrelated classes would implement your interface
– 您希望不相关的类实现您的接口
– You want to specify the behavior of a particular data type, but not concerned about who implements its behavior
– 您想要指定特定数据类型的行为,但不关心谁实现其行为
– You want to take advantage of multiple inheritance
– 您想要利用多重继承
学习高校课程-软件设计模式-OOP 和 UML 类图 OOP 与 Java(lec1)的更多相关文章
- 《大话设计模式》学习笔记0:设计模式的原则 && UML类图
一.单一职责原则:就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力.这种耦合会导致脆弱的设计 ...
- 设计模式——1.概述&UML类图和时序图
声明:本博客设计模式相关文章均整理和修改自网络,原文地址:图说设计模式 学习设计模式的3个层次—— 1.熟悉所有设计模式: 2.能够用代码实现: 3.运用到工作的项目中. 设计模式指导软件开发,学习设 ...
- 设计模式学习笔记(详细) - 七大原则、UML类图、23种设计模式
目录 设计模式七大原则 UML类图 设计模式分类 单例模式 工厂设计模式 简单工厂模式 工厂方法模式(使用抽象类,多个is-a) 抽象工厂模式(使用接口,多个like-a) 原型模式 建造者模式 适配 ...
- 设计模式-UML类图基础
设计模式之序-UML类图那点事儿 打14年年底就像写那么一个系列,用于讲设计模式的,代码基于JAVA语言,最早接触设计模式是大一还是大二来着,那时候网上有人给推荐书,其中就有设计模式,当时给我推荐的书 ...
- 设计模式之序章-UML类图那点事儿
设计模式之序-UML类图那点事儿 序 打14年年底就像写那么一个系列,用于讲设计模式的,代码基于JAVA语言,最早接触设计模式是大一还是大二来着,那时候网上有人给推荐书,其中就有设计模式,当时给我推荐 ...
- 从零开始单排学设计模式「UML类图」定级赛
阅读本文大概需要 3.5 分钟. 本篇是设计模式系列的开篇,虽然之前也写过相应的文章,但是因为种种原因后来断掉了,而且发现之前写的内容也很渣,不够系统. 所以现在打算重写,加上距离现在也有一段时间了, ...
- (转)面向对象——UML类图设计
背景:一直以来,对UMl类图的画法不甚理解,但是随着学习的深入,发现熟练掌握UML类图,能够更好理解代码间的逻辑性,而这也是程序设计的基础所在,所以很有必要把UML好好掌握. UML类图新手入门级介绍 ...
- 全面认识UML类图元素
本节和大家一起学习一下UML类图元素,类图能出色地表示继承与合成关系.为了将UML类图作为一种高效的沟通工具使用,开发者必须理解如何将类图上出现的元素转换到Java中.请看本节详细介绍. 全面认识UM ...
- C# UML类图及类之间的几种关系
今天晚上看了大话设计模式中的UML类图这一节感觉受益匪浅,好多年不能理解的类之间的关系理解了. 一.UML类图的表示方法 1.类的表示方法 A类用一个矩形框分三层表示,第一层是类名,斜体类名表示抽象类 ...
- 设计模式学习起点 UML类图笔记
UML类图笔记 大学开设的软件设计课程一般都会学习UML类图,大部分关于设计模式的描述都是使用的UML类图,可以说类图的表示是学习设计模式的起点.UML定义类之间的关系主要有六种:泛化关系.实现关系. ...
随机推荐
- SQL查询语句汇总
SQL查询语句汇总 students表 id class_id name gender score 1 1 小明 M 90 2 1 小红 F 95 class表 id name 1 一班 2 二班 3 ...
- oeasy教您玩转vim - 48 - # ed由来
范围控制 回忆上节课内容 我们这次研究了mark的定义和使用 mb定义 'b跳转 可以对marks,查询删除 三种marks 小写 本文件内 大写 跨文件 数字 配置文件中 甚至可以在行编辑中,使 ...
- oeasy教您玩转vim - 45 - # 按行编辑
按行编辑 回忆上节课内容 上次我们主要就是综合运用 很好玩的,更快速的解决问题 进行计算 ctrl+a,将具体的数字加1 ctrl+x,将具体的数字减1 5ctrl+a,将具体的数字加5 一次命令 ...
- oeasy教您玩转vim - 61- # 编辑过程
编辑过程 回忆上次 vi可以加各种参数 vi +4 oeasy.txt vi +/shiyanlou vi +%s/shiyanlou/oeasy/g oeasy.txt vi可以接收stdin的 ...
- Web 开发技术栈
Web 开发技术栈 Web 是什么? 简单地说,网络是一个遍布全球的网络,它连接大量设备并允许它们相互通信 Internet 上的网站托管在称为服务器的设备上,当与 Internet 上的网页交互时, ...
- 毕设项目:springboot+vue实现的在线求职平台
一.前言 随着信息技术的飞速发展和互联网的普及,线上求职已成为众多求职者和企业招聘的重要渠道.为满足市场需求,我们利用Spring Boot和Vue技术栈,开发了一款功能全面.用户友好的在线求职平台. ...
- 8、SpringBoot2之打包及运行
为了演示高级启动时动态配置参数的使用,本文在SpringBoot2之配置文件的基础上进行 8.1.概述 普通的 web 项目,会被打成一个 war 包,然后再将 war 包放到 tomcat 的 we ...
- vue导入项目缺少依赖‘node_modules’
从git下载好的项目,导入vue时提示'node_modules'依赖 则需要在你的项目包下面找是否有package-lock.json文件,如: 如果有,但是依旧报错,直接删除package-loc ...
- Win11、Win10局域网共享文件报错:共享文件夹出现,您的账号已锁定,无法访问
解决方法,见: https://blog.csdn.net/dengww_/article/details/133887598 解决方法: https://blog.csdn.net/dengww_/ ...
- python语言下的迷宫游戏的实现猜想
由于本人是研究AI的,尤其是AI的强化学习方向,有时候就会对一些小游戏环境的实现有几分兴趣,因为刚看了有关reinforcement learning解决maze游戏的论文,于是就突发奇想的对这个ma ...