SlideServe
Menu
Préférences
© SlideServe · v2026

Understanding Object-Oriented Programming: The Power of Abstraction

neveah avatar
27 diapositives · 381 Views · Sep 18, 2014

Explore the importance of abstraction in dealing with complexity and learn why Object-Oriented Programming (OO) offers a better approach compared to procedural decomposition. Discover the key elements of the Object Model and grasp the concepts of encapsulation, hierarchy, and modularity in Java programming.

Understanding Object-Oriented Programming: The Power of Abstraction - slide 1
01 / 27Understanding Object-Oriented Programming: The Power of Abstraction
1 / 17

Télécharger la présentation

Understanding Object-Oriented Programming: The Power of Abstraction
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. CSC 205 – Java Programming II Lecture 1 Jan 9, 2002

  2. Why OO? The Big Picture • Software is inherently complex • Complexity of the problem domain • Difficulty of managing the development process • Flexibility possible through software • Problems of characterizing the behavior of discrete systems

  3. Examples of Complex Systems Mercer • A university … HR Academics Athletics … … CLA Engr. CSC … … Math People … … Student Employee … Graduate … UnderGrad Admin. Faculty

  4. Attributes of Complex Systems • Hierarchy: a collection of interrelated subsystems. • Dividable until some lest level is reached • Arbitrary criterion for choosing subsystems • Cohesive and loosely coupled subsystems • One component is in charge of certain tasks • Intra-component communications are less frequent • Common patterns among subsystems • Evolved from existing simpler systems

  5. Bring Order to Chaos • The role of decomposition The technique of mastering complexity has been known since ancient time: divide et impera (divide and rule) -- Dijkstra • OO v.s. procedural decomposition • procedural: top-down structure design with each component denote a major step in some overall process • OO: viewing the world as a set of autonomous agents that collaborate to perform some higher level behavior • Which is better?

  6. OO vs Procedural -- Procedural

  7. OO vs Procedural -- OO

  8. Bring Order to Chaos – cont’d • The role of abstraction • An individual can comprehend only about seven (7) chunks of information at one time! • Ignore inessential details, deal with the generalized, idealized model of the object • The role of hierarchy • Object structure: illustrates how different objects collaborate with each other • Class structure: highlights common structure and behavior within a system

  9. Elements of the Object Model • Abstraction: model the essential attributes • Encapsulation: hide implementation details • Modularity: (think package in Java) • Hierarchy: ranking/ordering of objects • Typing*: enforcement of the class • Concurrency*: distinguishes active object • Persistence*: transcends time and/or space

  10. Abstraction • Idealized structure model of objects • Recognize similarities • Ignore differences (for the time being) • For a particular purpose • Provide crisply defined conceptual bounders • Distinguish an object from other kinds of objects

  11. Abstraction

  12. Abstraction (2) • Characterize the behavior of an object • by considering the services it provides to other objects (or its responsibilities) • (client-server) contract model • from the outside view • Works together with encapsulation • Expose what an object can do and how to request for services (which constitute the behavior of an object) • Hide implementation details

  13. Encapsulation

  14. Responsibility • Responsibilities of an object include • State: information to store • Implemented with variables in Java • Operations: • Implemented with methods in Java • Preconditions: conditions assumed by operations • Postconditions: conditions satisfied by operations • Invoke operations by message passing

  15. Message Passing • Three components that comprise a message: • The object to which the message is addressed (YourBicycle) • The name of the method to perform (changeGears) • Any parameters needed by the method (lowerGear)

  16. Modularity

  17. Hierarchy • Hierarchy is a ranking or ordering of abstractions • Two most important hierarchies • The “part-of” relationship, or aggregation • The “is-a” relationship , or inheritance • Inheritance, also known as subclassing • Single inheritance: the only legal way in Java • Multiple inheritance: supported in C++

  18. Subclassing in Java • A subclass SavingsAccount: • public class SavingsAccount extends Account { • private double interestRate; • public double getInterestRate() { • return interestRate; • } • public void setInterestRate(double rate) { • interestRate = rate; • } • }

  19. The Base Class: Account public class Account { // Instance variables private double balance; // Constructors public Account(double initialBalance) { balance = initialBalance; } public Account() { balance = 0.0; } }

  20. Writing a Subclass • A SavingsAccount object will contain two variables: • balance, and • interestRate

  21. Writing a Subclass • Methods that can be applied to SavingsAccount objects: • getInterestRate • setInterestRate • deposit (inherited) • withdraw (inherited) • getBalance (inherited) • close (inherited)

  22. Hierarchy: “part-of” relationship

  23. Hierarchy: “is-a” relationship

  24. Typing

  25. Typing Supports Polymorphism Shape // Shape s = ShapeBuilder.getNextShape(); s.draw(); // +draw() Oval Rectangle +draw() +draw()

  26. Concurrency

  27. Persistence