CodeGym /Kurslar /Frontend SELF AZ /OOP üzrə praktik nümunələr

OOP üzrə praktik nümunələr

Frontend SELF AZ
Səviyyə , Dərs
Mövcuddur

12.1 Veb-Tətbiqdə İstifadəçi İdarəetməsi

JavaScript-də Obyekt-Yönümlü Proqramlaşdırma (OOP) mürəkkəb, genişlənə bilən və asan dəstəklənən tətbiqlər yaratmağa imkan verir. JavaScript-də OOP istifadəsinin bəzi praktik nümunələrinə, o cümlədən class-lar, irsiyyət, enkapsulyasiya və polimorfizmə nəzər salaq.

Təsəvvür edin ki, biz istifadəçilərin idarə olunması üçün veb-tətbiq yaradırıq. Biz müxtəlif istifadəçi növləri üçün class-lar yarada bilərik, məsələn, User, AdminGuest, xüsusi class-lar yaratmaq üçün irsiyyətdən istifadə edirik.

İzah:

  • User class-ı loginlogout metodlarını ehtiva edir
  • Admin class-ı User-dən miras alır və deleteUser metodunu əlavə edir
  • Guest class-ı User-dən miras alır və requestAccess metodunu əlavə edir
  • AdminGuest class-larının nümunələri öz və ana class-larının metodlarından istifadə edir

Kod:

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

        login() {
          console.log(`${this.username} sistemə daxil oldu.`);
        }

        logout() {
          console.log(`${this.username} sistemdən çıxdı.`);
        }
      }

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

        deleteUser(user) {
          console.log(`${this.username} istifadəçi ${user.username}-i sildi.`);
        }
      }

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

        requestAccess() {
          console.log(`${this.username} girişi tələb etdi.`);
        }
      }

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

      admin.login(); // "adminUser sistemə daxil oldu."
      admin.deleteUser(guest); // "adminUser istifadəçi guestUser-i sildi."
      admin.logout(); // "adminUser sistemdən çıxdı."

      guest.login(); // "guestUser sistemə daxil oldu."
      guest.requestAccess(); // "guestUser girişi tələb etdi."
      guest.logout(); // "guestUser sistemdən çıxdı."
    
  

12.2 İnternet-mağazada məhsulların idarə olunması

Bu nümunədə internet-mağazada müxtəlif məhsul növlərini təqdim etmək üçün siniflər yaradacağıq, məsələn Product, ElectronicsClothing. Həmçinin calculateDiscount metodunun polimorfizmini tətbiq edəcəyik.

İzah:

  • Product sinifi calculateDiscount metoduna malikdir, bu, standart olaraq 10% endirim hesablayır
  • Electronics sinifi calculateDiscount metodunu yenidən təyin edir, elektronika üçün 20% endirim təqdim edir
  • Clothing sinifi calculateDiscount metodunu yenidən təyin edir, geyim üçün 15% endirim təqdim edir
  • ElectronicsClothing siniflərinin nümunələri öz calculateDiscount metodlarını endirimləri hesablamaq üçün istifadə edirlər

Kod:

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

        calculateDiscount() {
          return this.price * 0.1; // Standart olaraq 10%-lik endirim
        }

        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; // Elektronika üçün 20% endirim
        }
      }

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

        calculateDiscount() {
          return this.price * 0.15; // Geyim üçün 15% endirim
        }
      }

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

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

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

12.3: Kitabxananın idarə edilməsi

Bu nümunədə biz Book, MagazineLibrary siniflərini əhatə edən kitabxananın idarə edilməsi üçün siniflər yaradacağıq. Həmçinin, kitabxanaya elementlərin əlavə və silinməsi metodlarını həyata keçirəcəyik.

İzahedici məlumat:

  • BookMagazine sinifləri LibraryItem sinifindən miras alır və display metodunu yenidən təyin edir
  • Library sinifi kitabxana elementlərinin kolleksiyasını idarə edir və addItem, removeItemdisplayItems metodlarını təqdim edir
  • BookMagazine siniflərinin nümunələri kitabxanaya əlavə və silinib, məlumatları display metodu vasitəsilə göstərilir

Kod:

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(`Əlavə edildi: ${item.title}`);
        }

        removeItem(title) {
          this.items = this.items.filter(item => item.title !== title);
          console.log(`Silindi: ${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); // "Əlavə edildi: JavaScript: The Good Parts"
      library.addItem(magazine); // "Əlavə edildi: JavaScript Weekly"

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

      library.removeItem('JavaScript Weekly'); // "Silindi: JavaScript Weekly"
      library.displayItems(); // "JavaScript: The Good Parts by Douglas Crockford (2008)"
    
  
1
Опрос
İrsiyyət və polimorfizm,  40 уровень,  5 лекция
недоступен
İrsiyyət və polimorfizm
İrsiyyət və polimorfizm
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION