Download presentation
Presentation is loading. Please wait.
Published byJordan Harmon Modified over 9 years ago
1
CMPUT 301: Lecture 02 Basic concepts of Design and Implementations Lecturer: Martin Jagersand Department of Computing Science University of Alberta Notes based on previous courses by Ken Wong, Eleni Stroulia Zach Dodds, Martin Jagersand
2
2 Goals today: Concepts and stages in the program designs and implementation process. How and why Object Oriented design and Programming evolved and where it fits in the greater picture of SwEng paradigms. Some practical OO concepts and examples.
3
3 Design strategies overview: Previous courses: learned pragmatics of programming and principles of algorithms This course: Focus on whole project design. Important concepts: –abstraction (simplifying to its essentials the description of a real-world entity) –separation (treating “what” and “how” aspects independently)
4
4 Abstraction Examples:sales person, medical patient, etc.
5
5 Abstraction Design strategy 1: –focus on the essential aspects of an entity or concept –ignore or conceal non-essentials –map real-world entities to software objects Abstraction = –a named collection of attributes (data) and behavior (actions, methods) relevant to modeling a given entity for some particular purpose
6
6 Separation Design strategy 2: –separate “what” is to be done from “how” it is done –separate design issues from implementation details –separate externally “visible” behavior (interfaces) from hidden, internal mechanisms (implementations)
7
7 Interchangeable Implementations
8
8
9
9 Separation Separation of concerns: –interfaces reveal assumptions –implementations hide changeable details –interface == contract –avoid ripple effects
10
10 Design concepts vs. programming languages Note that design concepts (e.g. abstraction, separation …) are independent of programming languages But one or several programming language may support or impose certain concepts. Example: Separation: –.h files in c –Definition modules in modula 2,3 –Interfaces in java
11
11 Programming languages Programming paradigms and languages are between (and link) human concepts and ideas to machine implementations Have changed during time (more so than either ideas or machines) Computer Human ideas Prog. Lang.
12
12 Evolution of programming languages Machine lang Imperative (Fortran, c, Pascal…) Functional (lisp, ML, Haskell…) Logical (prolog, alf…) Object Oriented (Smalltalk, c++, java)
13
13 Design Strategies vs. programming languages Note again that design strategy (e.g. abstraction, separation …) are independent of programming languages. Also: The same project can be implemented using different strategies (and languages)
14
14 Example: Higher order functions Concept from functional design paradigms and mathematics Q=f g Implementation in imperative and OO languages and comments. (blackboard)
15
15 Example: XVision Provides visual tracking (rmember interaction video in last lecture) 10+ years effort several people, several univ Several implementations, same functionality Xvision 1-1.3 (Upenn, Yale): c, c++, Imperative fVision (Yale): Haskell, greencard, c XVision2 (JHU): c++ (Written using some fvision design strat)
16
16 Xvision application: face tracking
17
17 Xvision 1-1.3 (Upenn, Yale): c, c++, Imperative Written by “hackers” Neat tricks speed up, but shortcut across abstractions Good to provide specified functionality, but hard to port Hard to extend
18
18 fVision (Yale): Haskell, greencard, c trackMouth v = bestSSD mouthIms (newsrcI v (sizeof mouthIms)) trackLEye v = bestSSD leyeIms (newsrcI v (sizeof leyeIms)) trackREye v = bestSSD reyeIms (newsrcI v (sizeof reyeIms)) trackEyes v = composite2 (split, join) (trackLEye v) (trackREye v) where split = segToOrientedPts --- some geometry join = orientedPtsToSeg --- some more geometry trackClown v = composite2 concat2 (trackEyes v) (trackMouth v) Example program:
19
19 fVision (Yale): Haskell, greencard, c Uses dataflow model, higher order functions Much easier to script new behaviours Easier to express geometry More compact code Haskell code about speed: about ¼ of c
20
20 XVision2 (JHU): c++ See it in our lab, use in c306, learn in c610! Designed first, then implemented Extensible, portable Some loss of “neat” speadups due to separation and hiding Speed: ¼ - 1/7 of original c version.
21
21 Next time: Object oriented design strategies
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.