Rust - Grundlagen - 16 - Objektorientierte Programmierung

Objektorientierte Programmierung

OOP

Verständnis

  • Einige (nicht alle) Merkmale der Polymorphie

    Abstraktion: Objekte enthalten Daten und Verhalten (Objects Contain Data and Behavior)

    Kapselung: Implementierungsdetails verbergen (Encapsulation that Hides Implementation Details)

    Vererbung: als Typsystem und zur gemeinsamen Nutzung von Code (Inheritance as a Type System and as Code Sharing)

  • Trait-Objekt

    Box<dyn traitA> ist ein Trait-Objekt. Rust löst es zur Laufzeit auf, was Leistung kostet – möglichst sparsam verwenden.

    pub trait Draw {
        fn draw(&self);
    }
    // trait object
    pub struct Screen {
        pub components: Vec<Box<dyn Draw>>,
    }
    impl Screen {
        pub fn run(&self) {
            for component in self.components.iter() {
                component.draw();
            }
        }
    }
    // generic type + trait buond
    pub struct Screen<T: Draw> {
        pub components: Vec<T>,
    }
    impl<T> Screen<T>
    where
        T: Draw,
    {
        pub fn run(&self) {
            for component in self.components.iter() {
                component.draw();
            }
        }
    }
    

Quelle

https://doc.rust-lang.org/book/ch17-00-oop.html