Lewati ke konten utama

BAB 24. CLASS DIAGRAM

Pendahuluan

Class diagram berikut menggambarkan entitas utama sistem TemuBelajar, atributnya, dan relasi antar class sesuai dengan arsitektur Clean Architecture + Repository Pattern pada Laravel.


Class Diagram Utama

classDiagram

class User {
+int id
+int school_id
+string name
+string username
+string password
+string role
+bool must_change_password
+timestamp created_at
+login()
+changePassword()
+logout()
}

class Student {
+int id
+int user_id
+int classroom_id
+string nisn
+int level
+int xp
+decimal sis_score
+createRequest()
+viewLeaderboard()
+checkIn()
+checkOut()
+rate()
}

class Teacher {
+int id
+int user_id
+string nip
+string subject
+monitorSessions()
+joinRoom()
+validate()
}

class Classroom {
+int id
+int school_id
+string name
+string grade
+string academic_year
}

class Skill {
+int id
+string name
+string category
+string subject
}

class StudentSkill {
+int id
+int student_id
+int skill_id
+string proficiency_level
}

class Request {
+int id
+int student_id
+int subject_id
+string topic
+string description
+string preferred_location
+datetime preferred_time
+int duration_minutes
+string status
+create()
+cancel()
+updateStatus()
}

class Booking {
+int id
+int request_id
+int tutor_id
+string status
+datetime scheduled_at
+accept()
+reject()
+reschedule()
}

class Meeting {
+int id
+int booking_id
+datetime check_in_at
+datetime check_out_at
+int duration_actual
+string summary
+string status
+checkIn()
+checkOut()
}

class Rating {
+int id
+int meeting_id
+int rater_id
+int ratee_id
+int score
+string comment
+bool is_solved
+submit()
}

class SocialImpactScore {
+int id
+int student_id
+decimal score
+string period
+recalculate()
}

class Achievement {
+int id
+int student_id
+string badge_name
+string badge_icon
+datetime earned_at
}

User <|-- Student : extends
User <|-- Teacher : extends
Student --> Classroom : belongs to
Student --> StudentSkill : has many
Skill --> StudentSkill : belongs to many
Student --> Request : creates
Request --> Booking : generates
Booking --> Meeting : has one
Meeting --> Rating : receives many
Student --> SocialImpactScore : has
Student --> Achievement : earns

Penjelasan Class

ClassTanggung Jawab
UserIdentitas dasar dan autentikasi semua pengguna
StudentData akademik, XP, level, dan SIS siswa
TeacherData guru, NIP, dan monitoring
ClassroomRombel/kelas dalam satu sekolah
SkillMaster kompetensi akademik dan non-akademik
StudentSkillPivot: relasi siswa dengan skill yang dikuasai
RequestPermintaan bantuan belajar dari siswa
BookingPerjanjian antara siswa dan tutor
MeetingSesi pertemuan tatap muka yang tervalidasi
RatingPenilaian setelah sesi selesai
SocialImpactScoreAkumulasi dampak sosial siswa
AchievementBadge dan pencapaian gamifikasi

Relasi Antar Class

classDiagram
direction LR

class School {
+id
+name
+code
}

class User {
+id
+school_id
+role
}

class Request {
+id
+student_id
+status
}

class Booking {
+id
+request_id
+tutor_id
}

class Meeting {
+id
+booking_id
}

School "1" --> "many" User : memiliki
User "1" --> "many" Request : membuat
Request "1" --> "many" Booking : menghasilkan
Booking "1" --> "1" Meeting : memiliki