This document discusses key concepts in object-oriented programming including abstraction, encapsulation, classes, objects, inheritance, and polymorphism. It provides examples and definitions for basic terms like class, object, attribute, operation, and interface. The document also explains relationships like association, aggregation, generalization and how they are used to model real-world entities in an object-oriented system.
The objective is to explain how a software design may be represented as a set of interacting objects that manage their own state and operations and to introduce various models that describe an object-oriented design.
The objective is to explain how a software design may be represented as a set of interacting objects that manage their own state and operations and to introduce various models that describe an object-oriented design.
Object Oriented Programming concepts that are used for all the programming languages
The OOPs contains Class and Objects
It contains four main pillars
that are
Inheritance
Encapsulation
Polymorphism
Abstraction
with the four pillars OOPs are going to make our coding more efficiently
The OOPs help us in organizing the code in a formal way
it helps in code reusability
Overview of Object-Oriented Concepts Characteristics by vikas jagtapVikas Jagtap
Object-oriented data base systems are proposed as alternative to relational systems and are aimed at application domains where complex objects play a central role.
The approach is heavily influenced by object-oriented programming languages and can be understood as an attempt to add DBMS functionality to a programming language environment
Object oriented analysis_and_design_v2.0Ganapathi M
This is the presentation I have been using to discuss OOAD concepts with the new joiners of the my company. Quick refresher, but will give the paradigm shift for the participants on how OOAD is different in theory & practice.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
5. 5
Abstraction allows us to manage complexity by
concentrating on essential aspects making an entity
different from others.
A process allowing to focus on most important aspects
while ignoring less important details.
10. Basic Principles of Object Orientation
Basic Concepts of Object Orientation
11. Object
Class
Attribute
Operation
Interface
Implementation
Association
Aggregation
Composition
Generalization
Super-Class
Sub-Class
Abstract Class
Concrete Class
Discriminator
Polymorphism
12. Truck
Chemical Process
Linked List
Informally, an object represents an entity, either
physical, conceptual, or software
• Physical entity
• Conceptual entity
• Software entity
13. An object is a concept, abstraction, or thing with sharp
boundaries and meaning for an application
An object is something that has:
• State
• Behavior
• Identity
14. 14
Object-oriented programming supports the view that
programs are composed of objects that interact with
one another.
How would you describe an object?
Using its characteristics (has a ----?) and its behaviors
(can do ----?)
Object must have unique identity (name) : Basketball,
Blue ball
Consider a ball:
• Color and diameter are characteristics (Data
Declarations)
• throw, bounce, roll are behaviors (Methods)
15. 15
A class defines the general nature of a collection of
objects of the same type.
The process creating an object from a class is called
instantiation.
Every object is an instance of a particular class.
There can be many instances of objects from the same
class possible with different values for data.
17. OO Principle: Abstraction
A class is a description of a group of objects with
common properties (attributes), behavior (operations),
relationships, and semantics
• An object is an instance of a class
A class is an abstraction in that it:
• Emphasizes relevant characteristics
• Suppresses other characteristics
18. a + b = 10
Class
Course
Properties
Name
Location
Days offered
Credit hours
Start time
End time
Behavior
Add a student
Delete a student
Get course roster
Determine if it is full
19. Professor
name
empID
create( )
save( )
delete( )
change( )
Class Name
Attributes
Operations
A class is comprised of three sections
• The first section contains the class name
• The second section shows the structure (attributes)
• The third section shows the behavior (operations)
21. Objects Class
Professor Smith
Professor Jones
Professor Mellon
Professor
A class is an abstract definition of an object
• It defines the structure and behavior of each object in the class
• It serves as a template for creating objects
Objects are grouped into classes
22. :CourseOffering
number = 101
startTime = 900
endTime = 1100
:CourseOffering
number = 104
startTime = 1300
endTime = 1500
CourseOffering
number
startTime
endTime
Class
Attribute
Object
Attribute Value
24. 24
A class that lacks a complete implementation and
provides operations without implementing some methods
Cannot be used to create objects; cannot be instantiated
A concrete sub-class must provide methods for
unimplemented operations
25. 25
Has methods for all operations
Can be instantiated
Methods may be:
a) defined in the class or
b) inherited from a super-class
26. 26
Discriminator – an attribute that defines sub-classes
Example: “status” of company staff is a possible
discriminator to derive “management”, “senior” and
“junior” sub-classes.
27. 27
Ability to dynamically choose the method for an
operation at run-time or service-time
facilitated by encapsulation and generalization:
• encapsulation – separation of interface from
implementation
• generalization –organizing information such that
the shared features reside in one class and
unique features in another
Operations could be defined and implemented in the
super-class, but re-implemented methods are in unique
sub-classes.
34. Multiplicity defines how many objects participate in a
relationships
• The number of instances of one class related to ONE
instance of the other class
• Specified for each end of the association
Associations and aggregations are bi-directional by
default, but it is often desirable to restrict navigation to
one direction
• If navigation is restricted, an arrowhead is added to
indicate the direction of the navigation
36. Client Supplier
Package
ClientPackage SupplierPackage
Client Supplier
Class
Dependency
relationship
Dependency
relationship
Component
A relationship between two model elements where a
change in one may cause a change in the other
Non-structural,“using” relationship
37. A relationship among classes where one class shares
the structure and/or behavior of one or more classes
Defines a hierarchy of abstractions in which a subclass
inherits from one or more super-classes
• Single inheritance
• Multiple inheritance
Generalization is an “is-a-kind of” relationship
39. Airplane Helicopter Wolf Horse
FlyingThing Animal
Bird
multiple
inheritance
Use multiple inheritance only when needed, and
always with caution !
A class can inherit from several other classes
40. Inheritance leverages the similarities among classes
A subclass inherits its parent’s attributes,
operations, and relationships
A subclass may:
• Add additional attributes, operations, relationships
• Redefine inherited operations (use caution!)
Common attributes, operations, and/or
relationships are shown at the highest
applicable level in the hierarchy
42. Component
Interface
Use Case Use-Case Realization
Elided form
Class
Interface
Subsystem
Interface
Canonical form
One classifier serves as the contract that the other classifier
agrees to carry out
Found between:
• Interfaces and the classifiers that realize them
• Use cases and the collaborations that realize them
Editor's Notes
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation In the Best Practices module, we discussed some characteristics common to successful projects. OO facilitates the following best practices: Develop Iteratively Model Visually Use Component Architecture Defining basic OO terms and concepts allows everyone in the class to start on a level playing field.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation Discuss what makes a good abstraction with the students: Concise, Represents a single coherent concept, etc.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation Encapsulation is putting the “databits” and operations that manipulate them in the same place. Encapsulation DISALLOWS direct manipulation of things that have been encapsulated without utilising the supplied interface. Another example - the accelerator on a car. You put your foot down and car goes faster - this works on most cars, and you don’t worry about the cables, electronics, engine, etc.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation Before moving on, ask the students to name the four basic principles of OO (as a review).
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation A class has been called a “cookie cutter” for objects.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation In Rose: You may select which compartments are displayed via Diagram Object Properties for the diagram element. You may select which items appear in which compartments using the Edit Compartment function for the diagram element.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation The answers you get will vary depending on the students’ perspectives on what they see, as well as the criteria they use to organize the objects shown on this slide. For example, some possible answers include: Two classes: animals and non-animals Two classes: Extinct and non-extinct things Etc.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation This may seem repetitive with earlier slides, but it has been noted that the repetition of the discrimination between objects and classes is beneficial to “newbies”. If this does not apply to your class, you can cover this slide briefly.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation Polymorphism will be addressed in more detail in the Class Design module. Another example of polymorphism: There is a toddler sitting in front of some blocks and a teenager siting in front of a piano. An adult walks into the room and says “play”. The toddler plays with the blocks and the teenage plays the piano. Another example - car accelerator on different cars.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation Interfaces are not abstract classes, as abstract classes allow you to provide default behavior for some/all of their methods. Interfaces provide no default behavior.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation Don’t cover the details of the graphic on this slide. The semantics of each of the relationships will be discussed later.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation Associations connect instances of two or more classes together for some duration (as opposed to a dependency relationship, which represents a temporary association between two instances). Dependency relationships will be discussed in the Class Design module. Do not use relationship/role names if they add no value/information to the model. Remember, readability and understandability of the model are key -- only add information that adds value, not clutter to the diagrams.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation There are many examples of whole-part relationships: a Library contains Books, within a company Departments are made-up of Employees, a Computer is composed of a number of Devices. However, whether you model a relationship as an association or aggregation is really dependent on the domain being modeled. This is discussed in more detail on a later slide.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation Explain to the students that the diamond on this slide must be filled in with black so that the books would print right. If it was filled in with white, it would not be filled in in the books. Note: Compositional aggregation can be shown in by nesting one class within another; however, Rose does not directly support the drawing of a class within a class. Composition is not equivalent to containment by value, as some languages do not support containment by value (e.g., Java). By-value vs. by-reference is an implementation “thing”, whereas composition is a conceptual “thing” that can realized in the implementation using by-value, or by-reference (if the distinction is supported). Note: In Rose, composition is modeled by specifying “by-value” for the containment property of a role of a relationship.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation Generalization relationships are also permitted between packages. However, since packages do not themselves have any semantics, generalization between packages is not very common (generalization amongst subsystems, however, is practical). According to Grady Booch: “The terms “inheritance” and “generalization” are, practically speaking, interchangeable. The UML standardized on calling the relationship “generalization” so as not to confuse people with language-specific meanings of inheritance. To confuse matters further, some call this an “is-a” or a “kind of” relationship (especially those into conceptual modeling in the cognitive sciences). So, for most users, it’s fair to use either term. For power users - people who care about things like the UML metamodel and specifying formal semantics of the same, the relationship is called “generalization” and applying such a relationship between, for example, two classes, results in the subclass inheriting the structure and operations of the superclass (i.e. inheritance is the mechanism).
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation Emphasize that when a change is made to a super class all descendent classes inherit the change. Some languages do not support generalization. In these cases you will need to update the design model to reflect the characteristics of the implementation language. In cases where the implementation language does not support generalization between classes you must “design generalization in”. See the language specific appendices for more information. See Class Design for more information.
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation Ask the class the following to test their understanding: “ Without looking at your notes: How many operations does Car have? Answer: 1 How may relationships? Answer: 1 How many operations does Truck have? Answer: 2 How may relationships? Answer: 2” Generalization provides a way to implement polymorphism in cases where polymorphism is implemented the same way for a set of classes. The use of generalization to support polymorphism is discussed in more detail in the Class Design module
OOADv4.2 Instructor Notes Module 3 - Introduction to Object Orientation We discussed subsystems earlier in this module. We will look at interfaces and the realization relationship in more detail in the Architectural Design module.