is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves". – Alan Kay. Pioneering work on object-oriented programming ACM Queue. Vol. 2, No. 9 - Dec/Jan 2004-2005
C c1 = new C(); } public void method() { B b = new B(); b.sleep(); } } public class Y { A [] a = new A[5]; } public class A extends B { C c1, c2; public A() { c1 = new C(); } public void method() { D d = new D(); d.working(); } } public class X { public void m() { B var = new A(); double x = Math.sqrt(5); } } 15
is a s b a d a s their a bsence when needed. • A design th a t is more th a n wh a t we need smells. • Design principles are not a perfume to be liberally scattered all over the system. 23
item is m a inly a bstr a ct (interf a ces, a bstr a ct cl a sses – extensible but not directly us a ble); or (b) it is m a inly concrete (implement a tions – directly us a ble but less extensible). • It is a v a lue between 0 a nd 1: 0 ( a concrete cl a ss or a p a ck a ge with only concrete cl a sses) 1 ( a n a bstr a ct cl a ss/interf a ce or a p a ck a ge with only a bstr a ct cl a sses/interf a ces) 31
item is m a inly used by others (st a ble – h a rd to ch a nge); or (b) it m a inly depends on other items (in-st a ble – ch a nge a ble). • It is a v a lue between 0 a nd 1: • 0 only incoming dependencies to • 1 (only outgoing dependencies). 32
needed to run software, including the code, runtime, libraries, dependencies, and configuration files. 3. A container is a runtime instance of an image. It encapsulates the execution environment for a specific application or process, including the filesystem, environment variables, network settings, and runtime options. 1. A text file that contains instructions for building a Docker image
Source Code - submit your J a v a f iles b) Softw a re Design - your UML cl a ss di a gr a m c) Metrics (Code a nd Structure) d) Links to your GitHub repository e) Link to your video of the Fin a l Present a tion 44
your project. Show your project running. :: notes :: you c a n, a ddition a lly, t a lk (brie f ly) a bout your propos a l, i.e., the next fe a tures to be a dded 46
nd cl a ss di a gr a m. (Show wh a t is import a nt a nd m a ke it e a sy to re a d for the a udience) :: notes :: (you c a n use colors for the newly a dded cl a sses) • Wh a t did you do th a t m a ke this design “good”. • Do you a chieve SOLID? • Do you improve A, I, or D? (show the 2D plot reg a rding where your cl a sses a re in terms of the p a in zone) 48
a di a gr a m with boxes is f ine) • Describe your design. Could it be e a sy for a new developer to reuse, modify or extend wh a t you h a ve cre a ted? • Show a cl a ss di a gr a m (Expl a in it a nd describe the det a ils) • Be sure the di a gr a m a nd code m a tch. • Wh a t components were developed by e a ch te a m member? Wh a t were the criteri a for splitting the work (components, cl a sses, methods)? 49
DRY, a nd KIS • Code Metrics: LOC, eLOC, lLOC, CC • Structure Metrics: Abstr a ctness, Inst a bility, Dist a nce • Does the product h a ve a “good” qu a lity? • Wh a t fe a tures were Unit Tested? • Services? 52
the latest version from the GitHub release and know how to run it? •Consider using a JMenuBar, JPopupMenu •Consider making your JAR fi le executable (see next) 55