类之间的6种关系,继承,实现,依赖,关联,组合,聚合,要求画类图,写典型代码
时间: 2024-06-15 19:04:24 浏览: 193
UML类图关系泛化、继承、实现、依赖、关联、聚合、组合.doc
5星 · 资源好评率100%
类之间有以下六种关系:继承、实现、依赖、关联、组合和聚合。下面我将逐一介绍这些关系,并给出相应的类图和典型代码。
1. 继承(Inheritance):
继承是指一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。子类可以继承父类的公共成员,并且可以添加自己的特定成员。继承关系用箭头指向父类。
类图示例:
```
+--+
| 父类 |
+--+
| 属性和方法 |
+--+
^
|
+--+
| 子类 |
+--+
| 属性和方法 |
+--+
```
典型代码示例:
```python
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
print("Animal is eating...")
class Dog(Animal):
def bark(self):
print("Dog is barking...")
dog = Dog("Tom")
dog.eat() # 调用继承自父类的方法
dog.bark() # 调用子类自己的方法
```
2. 实现(Implementation):
实现是指一个类实现了一个接口或抽象类定义的方法。实现关系用带空心箭头的虚线表示。
类图示例:
```
+--+
| 接口/抽象类 |
+--+
| 方法定义 |
+--+
^
|
+--+
| 类 |
+--+
| 方法实现 |
+--+
```
典型代码示例:
```python
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
rect = Rectangle(5, 3)
print(rect.area()) # 调用实现的方法
```
3. 依赖(Dependency):
依赖是指一个类在某个方法中使用了另一个类作为参数或局部变量。依赖关系用带箭头的虚线表示。
类图示例:
```
+--+
| 类A |
+--+
| 方法 |
+--+
^
|
+--+
| 类B |
+--+
```
典型代码示例:
```python
class Car:
def __init__(self, engine):
self.engine = engine
def start(self):
self.engine.start()
class Engine:
def start(self):
print("Engine is starting...")
engine = Engine()
car = Car(engine)
car.start() # 调用依赖的方法
```
4. 关联(Association):
关联是指一个类与另一个类有某种关系,但彼此之间没有强依赖。关联关系用带箭头的实线表示。
类图示例:
```
+--+
| 类A |
+--+
| 属性和方法 |
+--+
|
|
+--+
| 类B |
+--+
| 属性和方法 |
+--+
```
典型代码示例:
```python
class Student:
def __init__(self, name):
self.name = name
class Course:
def __init__(self, name):
self.name = name
student = Student("Tom")
course = Course("Math")
student.course = course # 关联两个类的实例
```
5. 组合(Composition):
组合是指一个类包含另一个类的对象,并且包含的对象的生命周期与包含它的类相同。组合关系用带实心菱形的实线表示。
类图示例:
```
+--+
| 类A |
+--+
| 属性和方法 |
| - 类B的对象 |
+--+
|
|
+--+
| 类B |
+--+
| 属性和方法 |
+--+
```
典型代码示例:
```python
class Engine:
def start(self):
print("Engine is starting...")
class Car:
def __init__(self):
self.engine = Engine()
def start(self):
self.engine.start()
car = Car()
car.start() # 调用组合对象的方法
```
6. 聚合(Aggregation):
聚合是指一个类包含另一个类的对象,但包含的对象的生命周期可以独立于包含它的类。聚合关系用带空心菱形的实线表示。
类图示例:
```
+--+
| 类A |
+--+
| 属性和方法 |
| - 类B的对象 |
+--+
|
|
+--+
| 类B |
+--+
| 属性和方法 |
+--+
```
典型代码示例:
```python
class Department:
def __init__(self, name):
self.name = name
class Employee:
def __init__(self, name, department):
self.name = name
self.department = department
department = Department("HR")
employee = Employee("Tom", department) # 聚合两个类的实例
```
阅读全文