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
| Class | Tanggung Jawab |
|---|---|
User | Identitas dasar dan autentikasi semua pengguna |
Student | Data akademik, XP, level, dan SIS siswa |
Teacher | Data guru, NIP, dan monitoring |
Classroom | Rombel/kelas dalam satu sekolah |
Skill | Master kompetensi akademik dan non-akademik |
StudentSkill | Pivot: relasi siswa dengan skill yang dikuasai |
Request | Permintaan bantuan belajar dari siswa |
Booking | Perjanjian antara siswa dan tutor |
Meeting | Sesi pertemuan tatap muka yang tervalidasi |
Rating | Penilaian setelah sesi selesai |
SocialImpactScore | Akumulasi dampak sosial siswa |
Achievement | Badge 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