1/35
Flashcards reviewing key concepts in object modeling, UML, and object-oriented design principles.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Object-Oriented Programming (OOP)
A paradigm based on objects that contain data (attributes, properties) and code (methods, functions). Objects are instances of classes.
Object-Oriented Design (OOD)
The process of using objects and object-oriented programming when designing a software solution.
Object Calling
Objects don’t accept arbitrary calls. Acceptable calls are defined by methods.
Operations, Procedures, Subroutines, and Functions
Another word for Methods
Method Signature
The name, parameters, and types of a method.
Object Interface
The set of method signatures for that object.
Information Hiding
Restricting access to an object's state (attributes) through an interface
Client Object
Object calling the method.
Server Object
Object receiving and executing the call.
Interface
A set of functional properties that a software object provides or requires.
On-demand design
Design based on the needs of the client objects.
Modular Programming
A software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules (packages).
Modules are loose groupings of subprograms and data, while objects encapsulate data
Difference between Modules and Objects
UML (Unified Modelling Language)
A standardized visual language used in software engineering to represent different aspects of a system's structure and behaviour.
Class Diagrams
Represents the structure of a system by showing classes, their attributes, methods, and relationships.
Use Case Diagrams
Illustrate interactions between actors (users or external systems) and the system to achieve specific goals.
Sequence Diagrams
Depict interactions between objects in a scenario or use case over time.
Activity Diagrams
Model the flow of activities or actions within a system or use case.
State Machine Diagrams
Describe the states of an object or system and transitions between those states triggered by events.
Component Diagrams
Show the components of a system and their relationships.
Deployment Diagrams
Visualize the physical deployment of software components across hardware nodes.
Package Diagrams
Organize and structure the elements of a system into logical groupings.
Association
One object accesses the other in some way (i.e. calling a method, accessing an attribute, etc.)
Inheritance (aka generalisation)
An object inherits the properties of another object through class extension; “is a” relationship
Composition
An object references another object as an instance variable; “has a” relationship
Aggregation
Implies the child class can exist without the parent.
Composition
Implies the child class cannot exist without the parent.
Inheritance
Change in the “base” class propagates to the derived class and its client classes.
Composition
More adaptive to change, because change in the “base” class is easily “contained” and hidden from the clients of the front-end class.
Polymorphism
The ability of objects of different classes to be treated as objects of a common superclass.
Compile-time Polymorphism (Static Binding or Early Binding)
Decision on which method to call is made at compile time; Method & operator overloading
Runtime Polymorphism (Dynamic Binding or Late Binding)
Decision about which method to call is made at runtime based on the type of the object; achieved through method overriding and interface implementation.
Duck Typing
An object’s type/class is less important than the methods it defines.
Subtyping
A type of polymorphism where code written for a supertype will work on a subtype; often achieved with inheritance
Ad-hoc polymorphism
A single name or symbol having multiple implementations depending on the arguments.
TDD
Test-Driven Development