{"id":15055623,"url":"https://github.com/shahriar-raj/cse_108-object-oriented-programming-language-sessional","last_synced_at":"2026-04-08T14:32:08.630Z","repository":{"id":250849488,"uuid":"835641884","full_name":"shahriar-raj/CSE_108-Object-Oriented-Programming-Language-Sessional","owner":"shahriar-raj","description":"This repository contains all home and lab assignments for the CSE 108: Object Oriented Programming Language Sessional course, part of our Term-2, Level-1 curriculum. It applies theories from CSE 107 to problem-solving. We also learned JavaFX for frontend and made a java project \"Football Player Database\"","archived":false,"fork":false,"pushed_at":"2025-01-15T07:11:47.000Z","size":1323,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T19:54:08.725Z","etag":null,"topics":["academic","java","javafx","object-oriented-programming","problems-solving","programming","project"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shahriar-raj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-30T08:43:57.000Z","updated_at":"2025-01-15T07:11:49.000Z","dependencies_parsed_at":"2024-07-30T12:45:01.587Z","dependency_job_id":null,"html_url":"https://github.com/shahriar-raj/CSE_108-Object-Oriented-Programming-Language-Sessional","commit_stats":null,"previous_names":["shahriar-raj/cse_108-object-oriented-programming-language-sessional"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahriar-raj%2FCSE_108-Object-Oriented-Programming-Language-Sessional","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahriar-raj%2FCSE_108-Object-Oriented-Programming-Language-Sessional/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahriar-raj%2FCSE_108-Object-Oriented-Programming-Language-Sessional/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shahriar-raj%2FCSE_108-Object-Oriented-Programming-Language-Sessional/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shahriar-raj","download_url":"https://codeload.github.com/shahriar-raj/CSE_108-Object-Oriented-Programming-Language-Sessional/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243532532,"owners_count":20306152,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["academic","java","javafx","object-oriented-programming","problems-solving","programming","project"],"created_at":"2024-09-24T21:45:02.887Z","updated_at":"2025-12-29T14:42:27.611Z","avatar_url":"https://github.com/shahriar-raj.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CSE 108: Object-Oriented Programming Language Sessional\n\n## Course Overview\n\nCSE 108 is a 1.5 credit hour sessional course offered by the Department of Computer Science and Engineering (CSE) at Bangladesh University of Engineering and Technology (BUET). The course is designed to provide hands-on experience with the core principles of Object-Oriented Programming (OOP), complementing the theoretical knowledge gained in CSE 107: Object-Oriented Programming Language.\n\n## Repository Structure\n\nThis repository contains assignments and projects implemented in **Java** and **C++**. Each assignment demonstrates the application of core OOP principles.\n\n---\n\n## Assignments and Projects\n\n### 1. **Java Assignments**\n   - Focus on applying OOP principles in Java.\n   - **Key Topics Covered**:\n     - **Inheritance**:\n       - Implementing hierarchical relationships between classes.\n       - Utilizing `super` and overriding methods in derived classes.\n     - **Polymorphism**:\n       - Method overriding and dynamic method dispatch.\n       - Abstract classes and interfaces.\n     - **Encapsulation**:\n       - Using access modifiers (`private`, `protected`, `public`) to restrict access.\n       - Getter and setter methods for controlled access to class fields.\n     - **File I/O**:\n       - Reading and writing data to files.\n       - Handling exceptions during file operations.\n\n   - **Example Work**:\n     - Creating a system for managing a library, including book classes and user interactions.\n     - Implementing an employee management system using inheritance and file-based persistence.\n\n---\n\n### 2. **C++ Assignments**\n   - Focus on implementing OOP concepts using C++.\n   - **Key Topics Covered**:\n     - **Inheritance**:\n       - Base and derived class relationships.\n       - Overriding base class methods and calling parent class constructors.\n     - **Operator Overloading**:\n       - Customizing operators like `+`, `-`, and `\u003c\u003c` for user-defined types.\n     - **Friend Functions**:\n       - Enabling external functions to access private members.\n     - **Polymorphism**:\n       - Using virtual functions to implement dynamic binding.\n     - **Exception Handling**:\n       - Handling runtime errors with `try-catch` blocks.\n     - **Templates**:\n       - Implementing generic programming using function and class templates.\n\n   - **Example Work**:\n     - Designing a banking system with account hierarchies (e.g., savings, current, fixed deposit).\n     - Implementing a basic vector class with overloaded operators for mathematical operations.\n\n---\n\n## Getting Started\n\n### Prerequisites\nTo compile and run the assignments, ensure you have the following:\n- **Java Development Kit (JDK)**: For Java assignments.\n- **C++ Compiler** (e.g., GCC, Clang): For C++ assignments.\n\n### Instructions\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/shahriar-raj/CSE_108-Object-Oriented-Programming-Language-Sessional.git\n   cd CSE_108-Object-Oriented-Programming-Language-Sessional\n\n### Assignment Overview\n\u003cb\u003e 1. Assignment 1 : \u003c/b\u003e This is the first offline assignment for the CSE 108 (Object Oriented Programming) sessional course. The task involves completing a C++ code template involving basic OOP principles such as:\n\n    Class creation and encapsulation using Point and Circle\n\n    Constructor overloading and method definition\n\n    Overloading an update function for positional and radius updates\n\n    Extension task: Creating a new class Line using two Point instances and calculating its length\n\nThe final output demonstrates object state changes through a sequence of updates. The goal is to match the expected formatted output precisely, without modifying the given code structure.\n\n\u003cb\u003e 2. Assignment 2 : \u003c/b\u003e This is the second offline assignment for the CSE 108 (Object Oriented Programming) sessional course. It focuses on dynamic memory handling, deep copying, and object interaction between classes:\n\n    Book class: Predefined; handles book attributes and operations like edition generation and identity checking.\n\n    BookShop class: Implemented by the student to support:\n\n        Adding/removing books\n\n        Updating prices by ISBN\n\n        Searching by title\n\n        Merging two bookshops\n\n        Copy constructor and dynamic array management\n\nKey Concepts Practiced\n\n    Dynamic memory allocation \u0026 destructors\n\n    Deep copying vs shallow copying\n\n    Class composition and array manipulation\n\n    Realistic object-based interaction simulations\n\nThe output of the program must exactly match the sample output provided in BookShop.cpp, using both individual and batch operations on books.\n\n\u003cb\u003e 3. Assignment 3 : \u003c/b\u003e This is the third offline assignment for the CSE 108 (Object Oriented Programming) sessional course. The focus of this task is on operator overloading in user-defined types to mimic mathematical vector operations.\nFeatures Implemented\n\n    A custom Vector class with:\n\n        Dynamically allocated name\n\n        Overloaded operators:\n\n            ^ for cross product\n\n            * for scalar multiplication and component-wise multiplication\n\n            == for equality check\n\n    Custom output via a print() method (assumed implemented)\n\n    Memory management with dynamic allocation and proper destructor\n\nObjective\n\nMatch the exact sample output provided by using operator overloading in a mathematically consistent way, while strictly adhering to the given template and constraints.\n\n\u003cb\u003e 4. Assignment 4 : \u003c/b\u003e This repository contains a Java project developed as part of an academic assignment. It models a simple sports league management system using object-oriented principles.\n📁 Project Structure\n\n    League.java\n    Manages the overall league, storing a collection of matches and computing summaries like total goals, top scorers, or standings.\n\n    Match.java\n    Represents individual matches, including teams, scores, and date/time information. May also support comparison or filtering logic.\n\n    Main.java\n    Entry point of the application. Likely responsible for initializing the league, adding matches, and invoking summary or display methods.\n\n🧠 Core Concepts Demonstrated\n\n    Object-oriented design with multiple interacting classes (League, Match)\n\n    Encapsulation and data abstraction\n\n    Use of collections (e.g., arrays, ArrayList)\n\n    Input/output handling (console or file-based)\n\n    Basic statistics aggregation (e.g., total scores, win counts, etc.)\n\n🚀 Example Features (Expected)\n\n    Add a match to the league\n\n    Display all matches\n\n    Calculate total/average goals\n\n    Display match summaries\n\n    Identify highest scoring team or player\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshahriar-raj%2Fcse_108-object-oriented-programming-language-sessional","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshahriar-raj%2Fcse_108-object-oriented-programming-language-sessional","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshahriar-raj%2Fcse_108-object-oriented-programming-language-sessional/lists"}