CodeGym /Kurse /Frontend SELF DE /Praktische Beispiele für OOP

Praktische Beispiele für OOP

Frontend SELF DE
Level 40 , Lektion 5
Verfügbar

12.1 Benutzerverwaltung in einer Webanwendung

Objektorientierte Programmierung (OOP) in JavaScript ermöglicht die Erstellung von komplexen, skalierbaren und leicht wartbaren Anwendungen. Schauen wir uns ein paar praktische Beispiele für die Nutzung von OOP in JavaScript an, einschließlich Klassen, Vererbung, Kapselung und Polymorphismus.

Stell dir vor, wir entwickeln eine Webanwendung zur Benutzerverwaltung. Wir können Klassen für verschiedene Benutzertypen erstellen, wie User, Admin und Guest, wobei wir die Vererbung zur Erstellung spezialisierter Klassen nutzen.

Erklärung:

  • Die Klasse User enthält die Methoden login und logout
  • Die Klasse Admin erbt von User und fügt die Methode deleteUser hinzu
  • Die Klasse Guest erbt von User und fügt die Methode requestAccess hinzu
  • Instanzen der Klassen Admin und Guest verwenden die Methoden ihrer Klasse und der Basisklasse

Code:

JavaScript
    
      class User {
        constructor(username, email) {
          this.username = username;
          this.email = email;
        }

        login() {
          console.log(`${this.username} logged in.`);
        }

        logout() {
          console.log(`${this.username} logged out.`);
        }
      }

      class Admin extends User {
        constructor(username, email) {
          super(username, email);
          this.role = 'admin';
        }

        deleteUser(user) {
          console.log(`${this.username} deleted user ${user.username}.`);
        }
      }

      class Guest extends User {
        constructor(username, email) {
          super(username, email);
          this.role = 'guest';
        }

        requestAccess() {
          console.log(`${this.username} requested access.`);
        }
      }

      const admin = new Admin('adminUser', 'admin@example.com');
      const guest = new Guest('guestUser', 'guest@example.com');

      admin.login(); // "adminUser logged in."
      admin.deleteUser(guest); // "adminUser deleted user guestUser."
      admin.logout(); // "adminUser logged out."

      guest.login(); // "guestUser logged in."
      guest.requestAccess(); // "guestUser requested access."
      guest.logout(); // "guestUser logged out."
    
  

12.2 Produktverwaltung in einem Online-Shop

In diesem Beispiel erstellen wir Klassen zur Darstellung verschiedener Produkttypen in einem Online-Shop, wie Product, Electronics und Clothing. Wir implementieren auch Polymorphismus für die Methode calculateDiscount.

Erklärung:

  • Die Klasse Product enthält die Methode calculateDiscount, die standardmäßig einen Rabatt von 10 % berechnet
  • Die Klasse Electronics überschreibt die Methode calculateDiscount, um einen Rabatt von 20 % für Elektronik anzubieten
  • Die Klasse Clothing überschreibt die Methode calculateDiscount, um einen Rabatt von 15 % für Kleidung anzubieten
  • Instanzen der Klassen Electronics und Clothing verwenden ihre Methoden calculateDiscount zur Rabattberechnung

Code:

JavaScript
    
      class Product {
        constructor(name, price) {
          this.name = name;
          this.price = price;
        }

        calculateDiscount() {
          return this.price * 0.1; // 10% Rabatt standardmäßig
        }

        display() {
          console.log(`${this.name} - $${this.price.toFixed(2)}`);
        }
      }

      class Electronics extends Product {
        constructor(name, price, brand) {
          super(name, price);
          this.brand = brand;
        }

        calculateDiscount() {
          return this.price * 0.2; // 20% Rabatt für Elektronik
        }
      }

      class Clothing extends Product {
        constructor(name, price, size) {
          super(name, price);
          this.size = size;
        }

        calculateDiscount() {
          return this.price * 0.15; // 15% Rabatt für Kleidung
        }
      }

      const laptop = new Electronics('Laptop', 1000, 'BrandX');
      const tshirt = new Clothing('T-Shirt', 20, 'M');

      laptop.display(); // "Laptop - $1000.00"
      console.log(`Discount: $${laptop.calculateDiscount().toFixed(2)}`); // "Discount: $200.00"

      tshirt.display(); // "T-Shirt - $20.00"
      console.log(`Discount: $${tshirt.calculateDiscount().toFixed(2)}`); // "Discount: $3.00"
    
  

12.3: Bibliotheksverwaltung

In diesem Beispiel erstellen wir Klassen zur Verwaltung einer Bibliothek, einschließlich der Klassen Book, Magazine und Library. Wir implementieren auch Methoden zum Hinzufügen und Entfernen von Elementen aus der Bibliothek.

Erklärung:

  • Die Klassen Book und Magazine erben von der Klasse LibraryItem und überschreiben die Methode display
  • Die Klasse Library verwaltet die Sammlung von Bibliothekselementen und bietet die Methoden addItem, removeItem und displayItems
  • Instanzen der Klassen Book und Magazine werden in die Bibliothek eingefügt und entfernt, ihre Informationen werden mit der Methode display angezeigt

Code:

JavaScript
    
      class LibraryItem {
        constructor(title, year) {
          this.title = title;
          this.year = year;
        }

        display() {
          console.log(`${this.title} (${this.year})`);
        }
      }

      class Book extends LibraryItem {
        constructor(title, year, author) {
          super(title, year);
          this.author = author;
        }

        display() {
          console.log(`${this.title} by ${this.author} (${this.year})`);
        }
      }

      class Magazine extends LibraryItem {
        constructor(title, year, issueNumber) {
          super(title, year);
          this.issueNumber = issueNumber;
        }

        display() {
          console.log(`${this.title} - Issue ${this.issueNumber} (${this.year})`);
        }
      }

      class Library {
        constructor() {
          this.items = [];
        }

        addItem(item) {
          this.items.push(item);
          console.log(`Added: ${item.title}`);
        }

        removeItem(title) {
          this.items = this.items.filter(item => item.title !== title);
          console.log(`Removed: ${title}`);
        }

        displayItems() {
          this.items.forEach(item => item.display());
        }
      }

      const library = new Library();

      const book = new Book('JavaScript: The Good Parts', 2008, 'Douglas Crockford');
      const magazine = new Magazine('JavaScript Weekly', 2021, 450);

      library.addItem(book); // "Added: JavaScript: The Good Parts"
      library.addItem(magazine); // "Added: JavaScript Weekly"

      library.displayItems();
      // "JavaScript: The Good Parts by Douglas Crockford (2008)"
      // "JavaScript Weekly - Issue 450 (2021)"

      library.removeItem('JavaScript Weekly'); // "Removed: JavaScript Weekly"
      library.displayItems(); // "JavaScript: The Good Parts by Douglas Crockford (2008)"
    
  
1
Umfrage/Quiz
Vererbung und Polymorphismus, Level 40, Lektion 5
Nicht verfügbar
Vererbung und Polymorphismus
Vererbung und Polymorphismus
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION