| تنفيذ الطالب | حمزة أحمد حسن إسماعيل علي |
| تحت إشراف | د. علي علي سطوحي |
| المادة | Object Oriented Programming |
| التمرين | Exercises 2 — Classes Assignment |
الريبو ده فيه حل تمارين الـ OOP بتاعة الـ Classes Assignment، أربع مشاريع كل واحد فيهم بيطبق فكرة مختلفة من مبادئ البرمجة الكائنية بلغة C# (.NET)، الكود كله كونسول أبلكيشن، من غير أي مكتبات خارجية.
%%{init: {'theme':'dark'}}%%
pie showData
title مستوى الصعوبة لكل مشروع
"BankAccount (عادي)" : 1
"Student (عادي)" : 1
"Library ⭐⭐" : 2
"Quiz ⭐⭐⭐" : 3
🏦 1. BankAccountProjectبرنامج بسيط بيمثل حساب بنكي، بيسمح بالإيداع والسحب مع حماية إن السحب ميعديش الرصيد. الكلاس:
|
🎓 2. StudentProjectبرنامج بيدير درجات طالب في الامتحانات وبيحسب المتوسط بتاعه. الكلاس:
|
📚 3. BookProject |
🧠 4. QuizProject |
مخططات UML حقيقية بتوضح الـ properties والـ methods والعلاقات بين الكلاسات في كل مشروع (GitHub بيرندرها تلقائي كـ diagram تفاعلي قابل للتكبير).
classDiagram
class Library {
+string Name
+string Location
+List~Book~ Books
+AddBook(title, author, publisher, availability)
+CheckOutBook(title)
+ReturnBook(title)
+DisplayCollection()
}
class Book {
+string Title
+string Author
+string Publisher
+bool Availability
+DateTime? CheckOutDate
+DateTime? ReturnDate
+CheckOut()
+Return()
}
Library "1" o-- "many" Book : manages
classDiagram
class User {
+string Name
+string Email
+string Password
+List~Quiz~ TakenQuizzes
+ViewScores()
}
class Quiz {
+string QuizName
+int NumberOfQuestions
+double Score
+List~Question~ Questions
+CreateQuestion(text, options, answer)
+TakeQuiz(questions)
}
class Question {
+string QuestionText
+List~string~ AnswerOptions
+string CorrectAnswer
}
User "1" o-- "many" Quiz : takes
Quiz "1" o-- "many" Question : contains
classDiagram
class BankAccount {
+string AccountNumber
+double Balance
+string AccountHolderName
+Deposit(amount)
+Withdraw(amount)
}
classDiagram
class Student {
+string Name
+int Id
+List~double~ Grades
+AddGrade(grade)
+CalculateAverageGrade() double
}
sequenceDiagram
actor U as User
participant Q as Quiz
participant Qs as Question
U->>Q: CreateQuestion(text, options, answer)
Q->>Qs: new Question()
Q-->>Q: Questions.Add(question)
U->>Q: TakeQuiz(questions)
loop لكل سؤال
Q->>U: اعرض الاختيارات
U->>Q: يدخل رقم الإجابة
Q-->>Q: قارن مع CorrectAnswer
end
Q-->>Q: احسب Score
U->>U: ViewScores()
flowchart LR
A[Clone الريبو] --> B[افتح المشروع في Visual Studio]
B --> C[حدد المشروع كـ Startup Project]
C --> D[دوس F5]
D --> E[شغل التمرين وشوف النتيجة]
git clone https://github.com/hamza-ahmed26/OOP-Exercises-2.git
F5 أو زرار Run ▶️.OOP-Exercises-2/
├── BankAccountProject/
│ ├── BankAccount.cs
│ └── Program.cs
├── StudentProject/
│ ├── Student.cs
│ └── Program.cs
├── BookProject/
│ ├── Book.cs
│ ├── Library.cs
│ └── Program.cs
├── QuizProject/
│ ├── Question.cs
│ ├── Quiz.cs
│ ├── User.cs
│ └── Program.cs
└── README.md
| المبدأ | فين اتطبق |
|---|---|
| Encapsulation | كل الـ properties بـ private set ومتاحة بس عن طريق الـ public getters |
| Constructors | كل كلاس بيبدأ حالته من خلال constructor مخصص له |
| Collections | استخدام List<T> في الدرجات والكتب والأسئلة والكويزات |
| Class Collaboration | Library بتدير Book، Quiz بتدير Question، User بيتابع Quiz |
| Input Validation | التحقق قبل التنفيذ (زي عدم كفاية الرصيد أو الكتاب متسحب أصلاً) |
تسليم مادة Object Oriented Programming — تحت إشراف د. علي علي سطوحي