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 öğrendiğin tüm OOP kavramlarını bir araya getiren bir E-Öğrenme Platformu oluşturalım. Soyut sınıflar, kalıtım, mixin'ler ve kapsülleme kullanarak kullanıcıları, kursları ve kayıtları yöneten bir sistem oluşturacaksın.

Platformun beş dosya arasında düzenlenecek:

  • user.dart: User (String) ve _id (String) için özel alanlara ve genel getter'lara sahip soyut bir _name sınıfı oluştur. Alt sınıfların uygulaması gereken soyut bir String getRole() metodu ekle. toString() metodundan gelen role değerini kullanarak [role] name (id) döndürecek şekilde getRole() metodunu geçersiz kıl.
  • student.dart: Student sınıfını genişleten bir User sınıfı oluştur. Öğrenciler, (bu dosyada tanımlanan) özel bir ProgressTracking tamsayısı (0'dan başlayarak), buna ait bir getter, bu değeri artıran _completedLessons metodu ve completeLesson() döndüren getProgressReport() metodunu sağlayan bir Completed X lessons mixin'i kullanmalıdır. Student sınıfı, getRole() döndürecek şekilde Student metodunu uygulamalıdır.
  • instructor.dart: Instructor sınıfını genişleten bir User sınıfı oluştur. Eğitmenler, kurs başlıklarını temsil eden String'lerden oluşan özel bir _coursesCreated listesine sahiptir. Başlığı listeye ekleyen ve başlığı döndüren createCourse(String title) metodunu ekle. getRole() döndürecek şekilde Instructor metodunu uygula. Oluşturulan kursların sayısını döndüren bir courseCount getter'ı ekle.
  • enrollment.dart: Bir öğrencinin bir kursa kaydını takip eden bir Enrollment sınıfı oluştur. Bir studentId (String), bir courseName (String) ve varsayılan değeri false olan, getter'ı bulunan özel bir _isCompleted boolean'ı olmalıdır. Tamamlanma durumunu true olarak ayarlayan markComplete() metodunu ekle. Tamamlanma durumuna göre toString() veya studentId enrolled in "courseName" - Status: Completed döndürecek şekilde Status: In Progress metodunu geçersiz kıl.
  • main.dart: Her şeyi bir araya getir. Bir eğitmen (I001, Dr. Smith) oluştur ve iki kurs oluşturmalarını sağla: Dart Fundamentals ve Advanced OOP. Eğitmeni ve kurs sayısını Courses created: X biçiminde yazdır. Bir öğrenci (S001, Alice) oluştur, onu yazdır, ardından 3 dersi tamamlamasını sağla ve ilerleme raporunu yazdır. Alice için Dart Fundamentals kursuna bir kayıt oluştur, bunu yazdır, tamamlandı olarak işaretle ve tekrar yazdır.

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

Kendi başına pratik yap: Online Dart derleyicisi