ece 462 object-oriented progggramming using …ece 462 object-oriented progggramming using c++ and...
TRANSCRIPT
![Page 1: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/1.jpg)
ECE 462Object-Oriented Programmingj g g
using C++ and Java
Flickering and Double Buffering
Yung-Hsiang Lul @ d [email protected]
YHL Double Buffering 1
![Page 2: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/2.jpg)
FlickeringFlickering
YHL Double Buffering 2
![Page 3: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/3.jpg)
No FlickeringNo Flickering
YHL Double Buffering 3
![Page 4: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/4.jpg)
FlickeringFlickering
• Goal: continuously iterate through the three imagesy g g• Approach: draw background first then draw an image• Problem: occasionally, only the background is shown on
the screen without any of the three images• Result: the character sometimes disappears
YHL Double Buffering 4
![Page 5: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/5.jpg)
Interleaving of Drawing and DisplayInterleaving of Drawing and Display
public void draw(Graphics g) {// draw backgroundg.drawImage(bgImage, 0, 0, null);
//sent to screen
// draw imageg.drawImage(anim.getImage(), 0, 0, null);
}}
YHL Double Buffering 5
![Page 6: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/6.jpg)
Possible SolutionsPossible Solutions
• erase and draw difference
⇒ find the differences between each pair of images is not trivial Interleaving is still a problemis not trivial. Interleaving is still a problem.
• make draw atomic (i.e. cannot interleave)⇒ When the screen refreshes and drawing is
YHL Double Buffering 6
gincomplete, the screen will appear black.
![Page 7: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/7.jpg)
Double Buffering + Page Flipping
• double buffering
Double Buffering Page Flipping
g– buffer 1: working buffer for drawing, incomplete,
invisible to user– buffer 2: completed, shown on screen– switching between the two buffers for frame updates
page flipping• page flipping– the pixels are not copied– instead a pointer switching betweeninstead, a pointer switching between
the two buffers– flipping between monitor refresh
buffer 1screen
YHL Double Buffering 7
pp gbuffer 2
screen
![Page 8: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/8.jpg)
YHL Double Buffering 8
![Page 9: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/9.jpg)
YHL Double Buffering 9
![Page 10: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/10.jpg)
window.createBufferStrategy(2);gy( );BufferStrategy strategy = window.getBufferStrategy();Graphics g = strategy.getDrawGraphics();draw(g);g.dispose();
()strategy.show();
YHL Double Buffering 10
![Page 11: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/11.jpg)
Screen Manager with BufferStrategy
YHL Double Buffering 11
![Page 12: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/12.jpg)
Automatic Document Generation using Javadoc
YHL Double Buffering 12
![Page 13: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/13.jpg)
YHL Double Buffering 13
![Page 14: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/14.jpg)
YHL Double Buffering 14
![Page 15: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/15.jpg)
YHL Double Buffering 15
![Page 16: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/16.jpg)
YHL Double Buffering 16
![Page 17: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/17.jpg)
YHL Double Buffering 17
![Page 18: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/18.jpg)
YHL Double Buffering 18
![Page 19: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/19.jpg)
YHL Double Buffering 19
![Page 20: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/20.jpg)
YHL Double Buffering 20
![Page 21: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/21.jpg)
YHL Double Buffering 21
![Page 22: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/22.jpg)
YHL Double Buffering 22
![Page 23: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/23.jpg)
YHL Double Buffering 23
![Page 24: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/24.jpg)
YHL Double Buffering 24
![Page 25: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/25.jpg)
YHL Double Buffering 25
![Page 26: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/26.jpg)
YHL Double Buffering 26
![Page 27: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/27.jpg)
Images may be stored involatile memory forperformance reasons.p
YHL Double Buffering 27
![Page 28: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/28.jpg)
AnimationTest2Using ScreenManager
YHL Double Buffering 28
![Page 29: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/29.jpg)
Using ScreenManagerUsing ScreenManager
POSSIBLE MODES: an array of different DisplayMode_ y p y
create ScreenManager
findFirstCompatibleMode(POSSIBLE_MODES)
setFullScreen(displayMode)getGraphicsdrawanimationLoop drawdisposeupdate
YHL Double Buffering 29
![Page 30: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/30.jpg)
YHL Double Buffering 30
![Page 31: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/31.jpg)
YHL Double Buffering 31
![Page 32: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/32.jpg)
YHL Double Buffering 32
![Page 33: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/33.jpg)
YHL Double Buffering 33
![Page 34: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/34.jpg)
ECE 462Object-Oriented Programmingj g g
using C++ and Java
Moving Image: Sprite
Yung-Hsiang Lul @ d [email protected]
YHL Sprite 1
![Page 35: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/35.jpg)
YHL Sprite 2
![Page 36: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/36.jpg)
YHL Sprite 3
![Page 37: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/37.jpg)
SpriteSprite
YHL Sprite 4
![Page 38: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/38.jpg)
YHL Sprite 5
![Page 39: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/39.jpg)
YHL Sprite 6
![Page 40: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/40.jpg)
YHL Sprite 7
![Page 41: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/41.jpg)
YHL Sprite 8
![Page 42: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/42.jpg)
SpriteTest1SpriteTest1
YHL Sprite 9
![Page 43: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/43.jpg)
YHL Sprite 10
![Page 44: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/44.jpg)
YHL Sprite 11
![Page 45: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/45.jpg)
YHL Sprite 12
![Page 46: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/46.jpg)
YHL Sprite 13
![Page 47: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/47.jpg)
YHL Sprite 14
![Page 48: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/48.jpg)
ECE 462Object-Oriented Programmingj g g
using C++ and Java
Unified Modeling Language
Yung-Hsiang Lul @ d [email protected]
YHL UML 1
![Page 49: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/49.jpg)
Unified Modeling Language UMLUnified Modeling Language UML
• why to model?y– abstraction, ignore details, or multiple levels of details– identify participating objects
communicate with people– communicate with people– use tools to generate code, check correctness ...
• why UML?– language independent– platform independent– international standard– international standard– expressive (state, sequence, time, interface ...)– tool rich (UML → code, code → UML ... )
YHL UML 2
![Page 50: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/50.jpg)
YHL UML 3
![Page 51: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/51.jpg)
YHL UML 4
![Page 52: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/52.jpg)
UML Example in NetbeansUML Example in Netbeans
YHL UML 5
![Page 53: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/53.jpg)
YHL UML 6
![Page 54: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/54.jpg)
YHL UML 7
![Page 55: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/55.jpg)
YHL UML 8
![Page 56: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/56.jpg)
YHL UML 9
![Page 57: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/57.jpg)
What Does a Model Say?What Does a Model Say?
• relationships among objectsp g j– which objects participate in an activity– actions and interfaces– transitions of attributes
• sequence of actions• specialization, composition, ownership • quantities
• In addition, one critical value of a model is to help a developer think before doing.
YHL UML 10
p g
![Page 58: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/58.jpg)
Modeling a BankModeling a Bank
• objects:j– people: customers, tellers, bank managers, loan evaluators,
ATM maintainers ...– data: accountsdata: accounts– properties: branch offices, ATM machines, furniture ...
• actions: deposit, withdraw, apply for loans, approve or reject applications collect money from ATMapplications, collect money from ATM ...
• relationships among objects– customer can deposit, withdraw cash, or talk to teller– customer cannot talk to ATM maintainer– ATM maintainer cannot approve or reject loan applications– ATM can accept deposit; desk cannot
YHL UML 11
ATM can accept deposit; desk cannot ...
![Page 59: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/59.jpg)
YHL UML 12
![Page 60: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/60.jpg)
YHL UML 13
![Page 61: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/61.jpg)
Model States and TransitionsModel States and Transitions
• Many objects' behaviors depend on the values (i.e. y j p (state) of the objects' attributes.– age ⇒ vote
account balance ⇒ withdraw– account balance ⇒ withdraw– available credit ⇒ purchase
• Objects' behaviors often follow strict orders based on the transitions of the attributes.– vending machine must accept payment before returning changes– customer must open an account before withdrawing money– customer must open an account before withdrawing money– a user must enter the password before checking email– a bank customer must insert the ATM card and enter PIN before
deposit
YHL UML 14
deposit
![Page 62: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/62.jpg)
YHL UML 15
![Page 63: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/63.jpg)
Sequence of ActionsSequence of Actions
• State diagrams do not express the objects involved. g p j• For example, the previous diagram does not specify the
necessity of a customer and an ATM machine.• In fact, three objects are involved
– customerATM– ATM
– account (and the balance)
YHL UML 16
![Page 64: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/64.jpg)
YHL UML 17
![Page 65: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/65.jpg)
Class DiagramClass Diagram
YHL UML 18
![Page 66: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/66.jpg)
YHL UML 19
![Page 67: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/67.jpg)
QuantityQuantity
YHL UML 20
![Page 68: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/68.jpg)
YHL UML 21
![Page 69: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/69.jpg)
Start a UML Project in NetbeansStart a UML Project in Netbeans
YHL UML 22
![Page 70: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/70.jpg)
YHL UML 23
![Page 71: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/71.jpg)
YHL UML 24
![Page 72: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/72.jpg)
YHL UML 25
![Page 73: ECE 462 Object-Oriented Progggramming using …ECE 462 Object-Oriented Progggramming using C++ and Java Flickering and Double Buffering Yung-Hsiang Lu yungl@ d dlu@purdue.edu YHL Double](https://reader030.vdocuments.us/reader030/viewer/2022041107/5f0a869a7e708231d42c109d/html5/thumbnails/73.jpg)
YHL UML 26