← BACK

OOP-Exercises

C# ⭐ 0

README (8).md

Typing SVG

C#
.NET
OOP
Status


views ![Last Commit](https://img.shields.io/github/last-commit/hamza-ahmed26/OOP-Exercises-2?style=for-the-badge&color=00d9ff) ![Repo Size](https://img.shields.io/github/repo-size/hamza-ahmed26/OOP-Exercises-2?style=for-the-badge&color=00d9ff)

👤 بيانات المشروع

تنفيذ الطالب حمزة أحمد حسن إسماعيل علي
تحت إشراف د. علي علي سطوحي
المادة 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

برنامج بسيط بيمثل حساب بنكي، بيسمح بالإيداع والسحب مع حماية إن السحب ميعديش الرصيد.

الكلاس: BankAccount

  • Properties: AccountNumber, Balance, AccountHolderName
  • Methods: Deposit(), Withdraw()

🎓 2. StudentProject

برنامج بيدير درجات طالب في الامتحانات وبيحسب المتوسط بتاعه.

الكلاس: Student

  • Properties: Name, Id, Grades
  • Methods: AddGrade(), CalculateAverageGrade()

📚 3. BookProject ⭐⭐

نظام مكتبة بسيط، بيسمح بإضافة كتب واستعارتها وإرجاعها مع تسجيل التواريخ.

الكلاسات: Book, Library

  • Methods: AddBook(), CheckOutBook(), ReturnBook(), CheckOut(), Return()

🧠 4. QuizProject ⭐⭐⭐

تطبيق كويز أونلاين، المستخدم بياخد اختبار اختيار من متعدد وبتتحسب درجته أوتوماتيك.

الكلاسات: User, Quiz, Question

  • Methods: CreateQuestion(), TakeQuiz(), ViewScores()

🧩 مخططات الكلاسات

مخططات UML حقيقية بتوضح الـ properties والـ methods والعلاقات بين الكلاسات في كل مشروع (GitHub بيرندرها تلقائي كـ diagram تفاعلي قابل للتكبير).

📚 مخطط BookProject — العلاقة بين Library و Book
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
🧠 مخطط QuizProject — العلاقة بين User و Quiz و Question
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
🏦 مخطط BankAccountProject
classDiagram
    class BankAccount {
        +string AccountNumber
        +double Balance
        +string AccountHolderName
        +Deposit(amount)
        +Withdraw(amount)
    }
🎓 مخطط StudentProject
classDiagram
    class Student {
        +string Name
        +int Id
        +List~double~ Grades
        +AddGrade(grade)
        +CalculateAverageGrade() double
    }

🔄 السيناريو التنفيذي (QuizProject)

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[شغل التمرين وشوف النتيجة]
  1. اعمل clone للريبو
    git clone https://github.com/hamza-ahmed26/OOP-Exercises-2.git
    
  2. افتح المشروع اللي عايزه في Visual Studio.
  3. حدد المشروع كـ Startup Project.
  4. دوس 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

✨ مبادئ الـ OOP المطبقة

المبدأ فين اتطبق
Encapsulation كل الـ properties بـ private set ومتاحة بس عن طريق الـ public getters
Constructors كل كلاس بيبدأ حالته من خلال constructor مخصص له
Collections استخدام List<T> في الدرجات والكتب والأسئلة والكويزات
Class Collaboration Library بتدير Book، Quiz بتدير Question، User بيتابع Quiz
Input Validation التحقق قبل التنفيذ (زي عدم كفاية الرصيد أو الكتاب متسحب أصلاً)

تسليم مادة Object Oriented Programming — تحت إشراف د. علي علي سطوحي