https://github.com/starmanfrommars/oo-design-patterns-lab
This course provides hands-on experience in designing object-oriented systems using the powerful StarUML tool. You'll learn to model real-world problems using UML diagrams, including Class diagram.s,
https://github.com/starmanfrommars/oo-design-patterns-lab
class-diagrams intellij-idea object-oriented-design staruml
Last synced: 2 months ago
JSON representation
This course provides hands-on experience in designing object-oriented systems using the powerful StarUML tool. You'll learn to model real-world problems using UML diagrams, including Class diagram.s,
- Host: GitHub
- URL: https://github.com/starmanfrommars/oo-design-patterns-lab
- Owner: starmanfrommars
- Created: 2024-10-27T06:10:02.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-12-09T17:16:24.000Z (6 months ago)
- Last Synced: 2025-03-28T23:12:48.332Z (2 months ago)
- Topics: class-diagrams, intellij-idea, object-oriented-design, staruml
- Language: Java
- Homepage:
- Size: 1.03 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# OO DESIGN PATTERNS LAB
- Course Code : BCGL504
- Credits : 1## Course objectives:
* To introduce students to the fundamental principles and concepts of design patterns and their role in object-oriented software development.
* To equip students with the skills to identify and apply the most appropriate design patterns to solve common software design problems.
* To develop the ability to analyze the advantages and disadvantages of different design patterns in real-world applications.
* To provide hands-on experience in implementing various design patterns using object-oriented programming languages.## Lab Experiments
1. Design and implement ShapeFactory class that generates different types of Shape
objects (Circle, Square, Rectangle) based on input parameters using Factory Design
Pattern.2. Design and Implement an AbstractFactory class to create families of related or
dependent objects with respect to decathlon store without specifying their concrete
classes using Abstract Factory.3. Design and implement a complex object like a House using a step-by-step Builder
pattern, allowing different representations of the house (wooden, brick, etc.).4. Design and Implement to Extend a Coffee object with dynamic features (e.g., milk,
sugar, whipped cream) using Decorators.5. Design and Implement a Logger class ensuring a single instance throughout the
application6. Design and implement an Adapter Pattern for a Music System.
7. Design and Implement an Observer pattern for a news agency to notify subscribers
of updates.8. Design and Implement a Façade pattern for home theatre system.
9. Design and Implement a Template Method for Document Processing (word, pdf,
excel)10. Design and Implement weather monitoring system that notifies multiple display
devices whenever the weather conditions change that follows the Observer Design
Pattern.11. Design and Implement a Proxy pattern to control access to an object (e.g., a protected
resource or remote service).12. Design and Implement a Mediator pattern to manage communication between a set
of objects (e.g., chat room with multiple participants).## UML Relations and their meaning
* Association - General relationship between two classes without specifying the nature of relationship.
* Directed Association - Similar to association, but it also gives information about the direction of relationship.
* Aggregation - The relationship where a child can exist independently from the parent. Deleting the parent class will not affect the child's class.
* Dependency - Indicates that one class is dependent on another class.
* Generalization - Generalization is nothing but inheritance. where a class inherits another class.
* Interface Realization - One model depends on another model. For example, interface and class.
## Access Specifier Notations
Access specifiers can be specified at the begining when creating a method or attribute. Ex : "+ getDescription()"
* "+" = Public
* "-" = Private
* "#" = Protected## Points to be Remembered when drawing Class Diagrams
* Return type of any method can be specified after the method name seperated by a colon. Ex : "getData(): int".
* Parameters are passed to the methods where the parameter name is followed by its data type seperated by a colon. Ex: "name: String".
* [x] isAbstract must be ticked to mark a class Abstract and is denoted by Italic Class name in diagram.
* [x] isLeaf must be ticked to mark a method or attribute Final.
* [x] isStatic must be ticked to mark a method or attribute Static and is denoted by underline in diagram.
## Software Used
### For Designing :
[StarUml](https://staruml.io/)
### For Execution :
[IntelliJ IDEA](https://www.jetbrains.com/idea/)