E-Öğrenme Platformu
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 107 / 110.
Görev
KolayBu 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_namesınıfı oluştur. Alt sınıfların uygulaması gereken soyut birString getRole()metodu ekle.toString()metodundan gelen role değerini kullanarak[role] name (id)döndürecek şekildegetRole()metodunu geçersiz kıl.student.dart:Studentsınıfını genişleten birUsersınıfı oluştur. Öğrenciler, (bu dosyada tanımlanan) özel birProgressTrackingtamsayısı (0'dan başlayarak), buna ait bir getter, bu değeri artıran_completedLessonsmetodu vecompleteLesson()döndürengetProgressReport()metodunu sağlayan birCompleted X lessonsmixin'i kullanmalıdır.Studentsınıfı,getRole()döndürecek şekildeStudentmetodunu uygulamalıdır.instructor.dart:Instructorsınıfını genişleten birUsersınıfı oluştur. Eğitmenler, kurs başlıklarını temsil eden String'lerden oluşan özel bir_coursesCreatedlistesine sahiptir. Başlığı listeye ekleyen ve başlığı döndürencreateCourse(String title)metodunu ekle.getRole()döndürecek şekildeInstructormetodunu uygula. Oluşturulan kursların sayısını döndüren bircourseCountgetter'ı ekle.enrollment.dart: Bir öğrencinin bir kursa kaydını takip eden birEnrollmentsınıfı oluştur. BirstudentId(String), bircourseName(String) ve varsayılan değeri false olan, getter'ı bulunan özel bir_isCompletedboolean'ı olmalıdır. Tamamlanma durumunu true olarak ayarlayanmarkComplete()metodunu ekle. Tamamlanma durumuna göretoString()veyastudentId enrolled in "courseName" - Status: Completeddöndürecek şekildeStatus: In Progressmetodunu 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 FundamentalsveAdvanced OOP. Eğitmeni ve kurs sayısınıCourses created: Xbiç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çinDart Fundamentalskursuna 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: CompletedKendin 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
1Nesne Tabanlı Programlamanın Temelleri
Harici DosyalarKütüphaneler ve İçe AktarmalarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar SözcüğüMetotlarÖrnek DeğişkenleriYapıcıların TemelleriTekrar - Basit Hesap Makinesi4Null Güvenliği
Null Güvenliğine GirişNullable ve Non-Nullable? ve ! OperatörleriLate Anahtar Sözcüğü ve Null GüvenliğiNull-Aware OperatörlerSınıflarda Null GüvenliğiTekrar - Kullanıcı Profili Sistemi7Soyut Sınıflar ve Arayüzler
Soyut SınıflarSoyut MetotlarDart'ta ArayüzlerÖrtük ArayüzlerUygulamak ve GenişletmekBirden Çok ArayüzTekrar - Şekil Hesaplayıcı10Koleksiyonlar ve Generics
List, Set, Map Genel BakışTür Güvenli KoleksiyonlarGeneric SınıflarGeneric MetotlarGeneric KısıtlamalarIterable ve IteratorTekrar - Generic Depolama2Dart'ta Yapıcılar
Varsayılan YapıcıAdlandırılmış YapıcılarBaşlatıcı ListeleriSabit YapıcılarFabrika YapıcılarıYönlendiren YapıcılarÖzet - Şekil Oluşturucu5Kapsülleme
Public ve Private Üyeler_ Ön Ek KuralıKütüphane Düzeyinde GizlilikGetter ve Setter DerinliğiBilgi GizlemeTekrar - Öğrenci Kayıtları8Mixin'ler
Mixin'lere GirişMixin OluşturmaBirden Çok Mixin KullanımıMixin'lerde on Anahtar SözcüğüMixin ve Kalıtım KarşılaştırmasıMixin ve Arayüz KarşılaştırmasıÖzet - Hayvan Sistemi11Özel Metotlar
toString() Geçersiz KılmahashCode & == Geçersiz KılmaComparable Arayüzücall() MetodunoSuchMethod Geçersiz KılmaÖzet - Özel Koleksiyon14Tasarım Desenleri Bölüm 1
Tasarım Desenlerine GirişSingleton DeseniFactory DeseniObserver DeseniStrategy Deseni3Sınıf Özellikleri
Örnek ve Static ÜyelerFinal ve Const AlanlarLate DeğişkenlerStatic Metotlar ve AlanlarGetter ve Setter'larÖzet - Banka Hesabı Yöneticisi6Kalıtım
Temel Kalıtımsuper Anahtar SözcüğüMetot Geçersiz Kılma@override Açıklamasıfinal Sınıf Anahtar SözcüğüKurucular ve KalıtımÖzet - Çalışan Hiyerarşisi9Çok Biçimlilik
Çok Biçimlilik TemelleriArayüzler Yoluyla Çok BiçimlilikÇalışma Zamanı Tür Denetimiis ve as OperatörleriCovariant Anahtar KelimesiTekrar - Ödeme İşlemcisi12Asenkron OOP
Future'ler ve async/awaitStream TemelleriStream DenetleyicileriAsenkron YapıcılarSınıf Metotlarında AsenkronlukÖzet - Veri Getirici15Tasarım Desenleri Bölüm 2
Komut DeseniAdaptör DeseniDekoratör DeseniŞablon Metot DeseniDurum DeseniBileşik DesenDepo DeseniKendi başına pratik yap: Online Dart derleyicisi