類別之間的關係

在物件導向程式設計(OOP)中,類別(class)之間的關係可以分為以下幾種類型:


1. 繼承關係(Inheritance)

  • 描述:子類別繼承父類別的屬性和方法,並可以擴展或重寫這些方法。
  • 用途:表示「is-a」關係,子類別是一種父類別的特殊化。
  • 範例
    1
    2
    3
    4
    5
    6
    7
    class Animal:
    def speak(self):
    print("Animal speaks")

    class Dog(Animal): # Dog 繼承自 Animal
    def speak(self):
    print("Dog barks")

2. 組合關係(Composition)

  • 描述:一個類別包含另一個類別的實例,形成「has-a」關係。
  • 用途:用於表示部分-整體或擁有關係。
  • 範例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Engine:
    def start(self):
    print("Engine starts")

    class Car:
    def __init__(self):
    self.engine = Engine() # Car 擁有一個 Engine 實例

    def drive(self):
    self.engine.start()
    print("Car is driving")

3. 關聯關係(Association)

  • 描述:一個類別和另一個類別之間有某種業務邏輯上的聯繫,但並不擁有對方的實例。
  • 用途:表示「使用」或「合作」的關係。
  • 範例
    1
    2
    3
    4
    5
    6
    7
    class Driver:
    def drive(self, car):
    car.drive()

    class Car:
    def drive(self):
    print("Car is being driven")

4. 聚合關係(Aggregation)

  • 描述:一個類別包含另一個類別的實例,但兩者是弱依賴的關係,子物件的生命周期獨立於父物件。
  • 用途:表示「部分-整體」的關係,但部分可以獨立存在。
  • 範例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Wheel:
    def rotate(self):
    print("Wheel rotates")

    class Car:
    def __init__(self, wheels):
    self.wheels = wheels # Car 擁有 Wheels,但 Wheels 可以獨立存在

    def drive(self):
    for wheel in self.wheels:
    wheel.rotate()

5. 依賴關係(Dependency)

  • 描述:一個類別暫時依賴於另一個類別的功能,但不是永久的關聯。
  • 用途:通常用於方法或函數中的參數傳遞。
  • 範例
    1
    2
    3
    4
    5
    6
    7
    class Printer:
    def print_document(self, document):
    print(f"Printing: {document}")

    class User:
    def use_printer(self, printer):
    printer.print_document("MyDocument.pdf")

額外說明

  • 這些關係可以搭配使用,例如繼承 + 組合的模式經常出現在大型系統中。
  • 適當選擇關係有助於提升程式的可讀性、可重用性和維護性。

參考:
https://realpython.com/inheritance-composition-python/
Association,Aggregation,Composition and Inheritance的差異
https://itexpertsconsultant.wordpress.com/tag/class-diagram/
UML關係圖
https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/
https://www.umlboard.com/docs/relations/

帶寬測量工具iftop

查看不同網段以外的流量
``bash
sudo iftop -F 10.179.3.0/24


參考:


https://blog.csdn.net/qq_35995514/article/details/136542702

https://cloud.tencent.com/developer/article/1827834


https://www.alibabacloud.com/help/en/ecs/support/query-and-case-analysis-of-linux-network-traffic-load

RTSP串流品質檢測

ffmpeg RTSP串流品質檢測

1
ffmpeg -i rtsp://<伺服器IP>:<埠>/<路徑> -t 30 output.mp4

手動新增路由表

Windows

1
route -p add 10.179.101.0 mask 255.255.255.0 10.179.10.254 metric 10

Ubuntu

1
sudo ip route add 10.179.2.0/24 via 10.179.20.254 dev enp75s0f1