Menu
Coddy logo textTech

E-Öğrenme Platformu

Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 107 / 110.

challenge icon

Görev

Kolay

Bu kurs boyunca ustalaştığınız tüm OOP kavramlarını bir araya getiren bir E-Öğrenme Platformu inşa edelim. Soyut sınıflar, kalıtım, mixin'ler ve kapsülleme (encapsulation) kullanarak kullanıcıları, kursları ve kayıtları yöneten bir sistem oluşturacaksınız.

Platformunuz beş dosya halinde organize edilecektir:

  • user.dart: _id (String) ve _name (String) için özel alanlara (private fields) ve genel alıcılara (public getters) sahip soyut bir User sınıfı oluşturun. Alt sınıfların uygulaması gereken soyut bir String getRole() metodu ekleyin. toString() metodunu, rolün getRole() metodundan geldiği [role] name (id) formatını döndürecek şekilde geçersiz kılın (override).
  • student.dart: User sınıfını genişleten bir Student sınıfı oluşturun. Öğrenciler, bu dosyada tanımlanan ve 0'dan başlayan özel bir _completedLessons tam sayısına (getter ile birlikte), bunu artıran completeLesson() metoduna ve Completed X lessons döndüren getProgressReport() metoduna sahip bir ProgressTracking mixin'ini kullanmalıdır. Student sınıfı, Student döndürecek şekilde getRole() metodunu uygulamalıdır.
  • instructor.dart: User sınıfını genişleten bir Instructor sınıfı oluşturun. Eğitmenlerin özel bir _coursesCreated listesi (kurs başlıklarını temsil eden String listesi) olmalıdır. Listeye başlığı ekleyen ve başlığı döndüren bir createCourse(String title) metodu ekleyin. Instructor döndürecek şekilde getRole() metodunu uygulayın. Oluşturulan kurs sayısını döndüren bir courseCount alıcısı (getter) ekleyin.
  • enrollment.dart: Bir öğrencinin bir kursa kaydını takip eden bir Enrollment sınıfı oluşturun. Bir studentId (String), courseName (String) ve bir alıcıya (getter) sahip, varsayılanı false olan özel bir _isCompleted boolean değerine sahip olmalıdır. Tamamlanma durumunu true yapan bir markComplete() metodu ekleyin. toString() metodunu, tamamlanma durumuna göre studentId enrolled in "courseName" - Status: Completed veya Status: In Progress döndürecek şekilde geçersiz kılın (override).
  • main.dart: Her şeyi bir araya getirin. Bir eğitmen (I001, Dr. Smith) oluşturun ve iki kurs oluşturmasını sağlayın: Dart Fundamentals ve Advanced OOP. Eğitmeni ve kurs sayısını Courses created: X şeklinde yazdırın. Bir öğrenci (S001, Alice) oluşturun, onu yazdırın, ardından 3 dersi tamamlamasını sağlayın ve ilerleme raporunu yazdırın. Alice için Dart Fundamentals kursuna bir kayıt oluşturun, bunu yazdırın, tamamlandı olarak işaretleyin ve tekrar yazdırın.

Beklenen çıktı:

[Instructor] Dr. Smith (I001)
Courses created: 2
[Student] Alice (S001)
Completed 3 lessons
S001 enrolled in "Dart Fundamentals" - Status: In Progress
S001 enrolled in "Dart Fundamentals" - Status: Completed

Kendin dene

import 'user.dart';
import 'student.dart';
import 'instructor.dart';
import 'enrollment.dart';

void main() {
  // TODO: "I001" id'li ve "Dr. Smith" isimli bir eğitmen oluşturun
  
  // TODO: Eğitmenin iki kurs oluşturmasını sağlayın: "Dart Fundamentals" ve "Advanced OOP"
  
  // TODO: Eğitmeni yazdırın (toString() kullanır)
  
  // TODO: "Courses created: X" yazdırın, burada X courseCount değeridir
  
  // TODO: "S001" id'li ve "Alice" isimli bir öğrenci oluşturun
  
  // TODO: Öğrenciyi yazdırın
  
  // TODO: Öğrencinin 3 dersi tamamlamasını sağlayın (completeLesson() metodunu 3 kez çağırın)
  
  // TODO: Öğrencinin ilerleme raporunu yazdırın
  
  // TODO: Alice (S001) için "Dart Fundamentals" kursuna bir kayıt (enrollment) oluşturun
  
  // TODO: Kaydı yazdırın
  
  // TODO: Kaydı tamamlandı olarak işaretleyin
  
  // TODO: Kaydı tekrar yazdırın
}

Nesne Yönelimli Programlama bölümündeki tüm dersler