oo design slide
Post on 07-Aug-2015
37 Views
Preview:
TRANSCRIPT
BY: I S A AC C A RT E R
Object-Oriented Analysis and Design
WHAT HAVE I BEEN UP TOO?
• Started a Raspberry Pi Meetup for DC• Currently working on a location
• Work at 5AM never ends• Started up a book club here at 5AM• Beginning to do development on Linux Mint• You will learn a ton when you work on an open source
project
• I been doing some podcasting
DIFFERENT KIND OF JUG
• Not much code at all• Going to be asking you guys a lot of questions.• There is no right or wrong answer• Provides us a chance to learn from each other.• Which is why we are here
DESIGN PATTERNS AND ME
• I’ve reached that point where I think more about the design of the project• Many books written about OO programming and
design• We are going to cover one tonight
Source of the talk
• Object-Oriented Analysis and Design With Applications (3rd Edition)
HOW THE BOOK IS BROKEN DOWN
• Section 1 - Concepts• Chapter 1: Complexity• Chapter 2: The Object Model• Chapter 3: Classes and Objects• Chapter 4: Classification
• Section 2 - Method• Chapter 5: Notation• Chapter 6: Process• Chapter 7: Pragmatics
• Section 3 - Applications• Chapter 8 – 12
QUESTION?
• When you think about OOAD, what are some things that come to mind?
Chapter 1: Complexity
• Software is inherently complex• The complexity of software often exceeds the brain’s
capacity
• Our job as a software engineer is to create the illusion of simplicity• Complex systems can be viewed by focusing on
either things or processes
QUESTION?
• What does good code look like?
• I can tell you what bad code is in small chunks, but as an entire project as a whole or a system….how can you tell what’s good and what’s bad?
CHAPTER 2: THE OBJECT MODEL
• Encompasses the principles of OO programming• Encapsulation, Abstraction, Modularity, Hierarchy, Typing,
Concurrency, and Persistence
• Modularity is the property of a system that has decomposed into a set of cohesive and loosely coupled modules• Typing is the enforcement of the class of an
object
QUESTION?
• Are getters/setters evil?
THINK ABOUT THIS…
Dog dog = new Dog();Ball ball = dog.getBall();
V/S
Dog dog = new Dog();dog.take(new Ball());Ball ball = dog.give();
CHAPTER 3: CLASSES AND OBJECTS
• What is and What isn’t an object?• Relationships are important among classes• Multiplicity• One-to-one, Many-to-many
• Inheritance• Multiple Inheritance
• Role of Classes and Objects in Analysis and Design• Identify the classes that form the vocab of the domain• Create the structures for sets of objects to work together
to satisfy the requirements of the problem
QUESTION?
• Should every class have an interface?
CHAPTER 4: CLASSIFICATION
• How a class or object is named a fundamental issue in OOAD• This is how we discover what an object can do
QUESTION
• What’s some of issues that we run into when naming an object or method?
• I constantly run into “writer’s block” when naming something, how can I get around that problem?
CHAPTER 5: NOTATION
• UML Diagrams• Broken down into two sections• Structure Diagrams• Behavior Diagrams
• Can also include Interaction Diagrams
• Many kinds of diagrams• I have used…• Package Diagram• Use Case Diagram• Sequence Diagram• Activity Diagram
• Used them to help create a SAD for a project
QUESTION?
• Does anyone use UML diagrams in their daily work?
• Does anyone feel that UML diagrams are pointless?
CHAPTER 6: PROCESS
• Talked about how to create a solid development process• We have steps in place here at 5AM.• Prior to development• During development• Post-development
CHAPTER 7: PRAGMATICS
• Planning• We live and breath Scrum here at 5AM
• Tools• Jenkins helps us create solid OO code
QUESTION
• What are some of the benefits of OO development?
• What are some of the risks of OO development?
CHAPTERS 8 -12
• Each chapter sets the stage for a different scenario and walks through the first 7 chapters on how to implement each chapter• Satellite-based Navigation system• Traffic management system• AI / Cryptanalysis system• Weather monitoring station• Vacation tracking system
IMHO OF THE BOOK
• Not really the best book over OOAD• Five chapters dedicated to applying it, which
made them extremely hard to read• Two chapters covering applying agile to OO
thinking• I would still recommend reading it since there’s
nothing wrong with gaining more knowledge
SUMMARY
• Design, by nature, is a series of trade-offs• Every choice has a good side and a bad side• Make “informed” OO choices by the context of
the overall criteria, not because “of blind programming”
SOURCES
• http://www.javaworld.com/article/2073723/core-java/why-getter-and-setter-methods-are-evil.html?page=2• http://blog.shaunfinglas.co.uk/2015/04/getters-an
d-setters-are-evil-redux.html• http://www.amazon.com/Object-Oriented-
Analysis-Design-Applications-3rd/dp/020189551X/ref=sr_1_2?s=books&ie=UTF8&qid=1434425605&sr=1-2&keywords=object+oriented+analysis+and+design
top related