Lec2:

  1. Dynamic Dispatch: is the process of selecting which implementation of a polymorphic operation to call at run time.
  2. Interface: calling the method that is not in the interface will cause compilation error.

Lec3: N/A

Lec4:

  1. Method contract should define pre/post conditions and exceptional behavior, client is to blame if precondition is not met, service is to blame if the postcondition is not met. Exceptional behavior specify what code will do if a precondition is violated
  2. Exception: runtime exception(unchecked) and IO exception(checked). The IO exception must be caught, otherwise code won’t compile.
  3. Unit test: test boundary and test exhaustively. Specification test (black box) and structural test (white box). Sometimes we reach 100% statement coverage still can miss the defect in the code. We doing boundary interior testing for “for loops”                           
  4. Decision tables examples and previous mid question

bO6XoSQr43anhaEEEIIIYQQQgghnxtlDyGEEEIIIYQQQkieREELQgghhBBCCCGE5EkUtCCEEEIIIYQQQkieREELQgghhBBCCCGE5EkUtCCEEEIIIYQQQkieREELQgghhBBCCCGE5EkUtCCEEEIIIYQQQkieREELQgghhBBCCCGE5EkUtCCEEEIIIYQQQkieREELQgghhBBCCCGE5EkUtCCEEEIIIYQQQkgeBPwfDKIQHClCz14AAAAASUVORK5CYII= wP0Wk3tf2MdTwAAAABJRU5ErkJggg==

  1. Previous mid question ans
  1. 2 (x !=0 y !=0), (x != 0 y==0)
  2. 1 more test with x == 0
  3. No, when step = 0, the error cannot be detected

Lec5:

  1. System Sequence Diagram
  2. Behavioral ContractG+fPnxZgmAvwfjmGUx9bFyX8AAAAASUVORK5CYII=PzkACETZ4uwqAAAAAElFTkSuQmCC
  3. Domain model: If we do not think of some conceptual class X as text or a number in the real world, it's probably a concept, not an attribute

DyYtiIiIiIiIiMgCAV8AITSYG52VMc0AAAAASUVORK5CYII=wHHMYa0BFhSTgAAAABJRU5ErkJggg==

Lec6:

  1. Object model diagram

wOkSzZXPlkGxAAAAABJRU5ErkJggg==



Lec11:

wHYzJC3tAmn9gAAAABJRU5ErkJggg==b8NdqSTAAAAAElFTkSuQmCC

wMNbdJQflNQWwAAAABJRU5ErkJggg==D65qQXN6JcMTAAAAAElFTkSuQmCC

x9uih1gb47JLAAAAABJRU5ErkJggg==AQAAAABJRU5ErkJggg==

wNbJPgxuGBnhwAAAABJRU5ErkJggg==wHqJwHd1l+KTAAAAABJRU5ErkJggg==

wGJE6kJac9+RwAAAABJRU5ErkJggg==SUiPIyJEpGmRvBUD38m9ejvAz44tZ1XH1zGENvi6S+q4PojNTDU3IeJCIiIiKipY+BFXqAGFdhElYH0N7TAG9pGUyJliXp3T50nZtQA5NWbM4AWrsa4FOTLRMRERERLV8MrNADJIv4YAv6LqWRtdnhqqzDgVAAbg78iBYvncTYxQuITlxHSspoM1TKHHBu8KJmRy0Cj7jyryxERERERLRMMLBCRERERERERFQiJq8lIiIiIiIiIioRAytERERERERERCViYIWIiIiIiIiIqEQMrBARERERERERlYiBFSIiIiIiIiKiEjGwQkRERERERERUIgZWiIiIiIiIiIhKxMAKEREREREREVGJGFghIiIiIiIiIioRAytERERERERERCViYIWIiIiIiIiIqEQMrBARERERERERlYiBFSIiIiIiIiKiEjGwQkRERERERERUIgZWiIiIiIiIiIhKxMAKEREREREREVGJGFghIiIiIiIiIioRAytERERERERERCViYIWIiIiIiIiIqEQMrBARERERERERlYiBFSIiIiIiIiKiEjGwQkRERERERERUIgZWiIiIiIiIiIhKxMAKEREREREREVGJGFghIiIiIiIiIioRAytERERERERERCViYIWIiIiIiIiIqEQMrBARERERERERlYiBFSIiIiIiIiKiEjGwQkRERERERERUIgZWiIiIiIiIiIhKAvwfqkGHnN4SVyMAAAAASUVORK5CYII=



Lec13

B5kLXDSB+TmzAAAAAElFTkSuQmCC9ICnzrAGsVJAAAAAElFTkSuQmCC

8PMnfc8jJRImkAAAAASUVORK5CYII=wPx6hEfEbxtswAAAABJRU5ErkJggg==

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



Lec14

Gr3J2vq11GgAAAABJRU5ErkJggg==xSdJ+UFoAAAAASUVORK5CYII=s2x+EO2JSIiIiIiIiLqBWdlCxoiIiIiIiIiooGEgwQTEREREREREfUzVtAQEREREREREfUzVtAQEREREREREfUzVtAQEREREREREfUr4P8BbXNqJYD7w2wAAAAASUVORK5CYII=kP+d0DYAAAAAElFTkSuQmCC6UAAAAASUVORK5CYII=x9B6A+qjyJ7AAAAAElFTkSuQmCCaZbQAAAAAlCpVGAID8SUnU4R2rNXM0CSMAAACgJKPSCAD8xPlWGgEAAADwT1QaAQAAAAAAwAdJIwAAAAAAAPggaQQAAAAAAAAfJI0AAAAAAADgg6QRAAAAAAAAMpH+Pyc+L0tqgTHEAAAAAElFTkSuQmCC 



Lec16

tU9SIUUAAAAASUVORK5CYII=xP+vGyHkaquPN09S1zNafY2QYAAAAAADjN+sdjQT6fyidM0J13UFgBAAAAAADpJS1HrgAAAAAAAPQXrBYEAAAAAACQAoorAAAAAAAAKaC4AgAAAAAAkAKKKwAAAAAAACmguAIAAAAAAJACiisAAAAAAAApoLgCAAAAAACQAoorAAAAAAAAKaC4AgAAAAAAkAKKKwAAAAAAACmguAIAAAAAAJACiisAAAAAAAApoLgCAAAAAACQAoorAAAAAAAAKaC4AgAAAAAAkAKKKwAAAAAAAClwxQ2nfdLFw02KxyPOFgAAAAAAwJnn71pcAQAAAAAAONPxWBAAAAAAAEAKKK4AAAAAAACkgOIKAAAAAADApyb9f4eYaqriBkbIAAAAAElFTkSuQmCC

tROM0XWGIiCjXGDQhyoW7QfhOuDF4ehiXrwYRlhsW0iooFixcUYaKNQ4UTni1ik+W8FUP3D8YwsmLlxEMqS20mSZ5VY6yr61H6WLzxFcgIiLKlZtD6Nj9CkZEOWUosKD4D2uxaXXhJFd+IpqOQhjqbMAr50KISKvRFVWgtsqJQt68IKJPCAZNiIiIiIiIiIh0cCJYIiIiIiIiIiIdDJoQEREREREREelg0ISIiIiIiIiISAeDJkREREREREREOhg0ISIiIiIiIiLSwaAJEREREREREZEOBk2IiIiIiIiIiHQwaEJEREREREREpINBEyIiIiIiIiIiHQyaEBERERERERHpYNCEiIiIiIiIiEgHgyZERERERERERDoYNCEiIiIiIiIi0sGgCRERERERERGRDgZNiIiIiIiIiIh0MGhCRERERERERKSDQRMiIiIiIiIiIh0MmhARERERERER6WDQhIiIiIiIiIhIB4MmREREREREREQ6GDQhIiIiIiIiItLBoAkRERERERERkQ4GTYiIiIiIiIiIdDBoQkRERERERESkg0ETIiIiIiIiIiIdDJoQEREREREREelg0ISIiIiIiIiISAeDJkREREREREREOhg0ISIiIiIiIiLSwaAJEREREREREdEYwP8fcvG8HWl07CoAAAAASUVORK5CYII=PvsXAIAAAAgzc4lAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAADSxCUAAAAA0sQlAAAAANLEJQAAAACSIr4CbbNPQh3e79sAAAAASUVORK5CYII=

7XZxMnof5IzmMjIioy9w0o+b9lSjc7KbkqpJYrvXJXDw3PZoBECKi24RBECIiIiKirmaqRdWn5ajaVYPa04rRH2K51ph4JCelIPXH8dBxGB4R0W3FIAgRERERERERBQRWhyEiIiIiIiKigMAgCBEREREREREFBAZBiIiIiIiIiCggMAhCRERERERERAGBQRAiIiIiIiIiCggMghARERERERFRQGAQhIiIiIiIiIgCAoMgRERERERERBQQGAQhIiIiIiIiooDAIAgRERERERERBQQGQYiIiIiIiIgoIDAIQkREREREREQBgUEQIiIiIiIiIgoIDIIQERERERERUUBgEISIiIiIiIiIAgKDIEREREREREQUEBgEISIiIiIiIqKAwCAIEREREREREQUEBkGIiIiIiIiIKCAwCEJEREREREREAYFBECIiIiIiIiIKCAyCEBEREREREVFAYBCEiIiIiIiIiAICgyBEREREREREFBAYBCEiIiIiIiKigMAgCBEREREREREFBAZBiIiIiIiIiCggMAhCRERERERERAGBQRAiIiIiIiIiCggMghARERERERFRQGAQhIiIiIiIiIgCAoMgRERERERERBQQGAQhIiIiIiIiooDAIAgRERERERERBQQGQYiIiIiIiIgoIDAIQkREREREREQBgUEQIiIiIiIiIgoIDIIQERERERERUUBgEISIiIiIiIiIAgKDIEREREREREQUEBgEISIiIiIiIqIAAPwfsXVu6HVR0XIAAAAASUVORK5CYII=3k1ODv4lFQeAAAAAElFTkSuQmCC

A732gK3MVtYlAAAAAElFTkSuQmCC3qmwhj4SvFwAAAAASUVORK5CYII=

Oyd9+rWpW9PBeCgQuhYXSSPC9luuwRSETUFRhIIiIiIiIiIiKihHDVNiIiIiIiIiIiSggDSURERERERERElBAGkoiIiIiIiIiIKCEMJBERERERERERUUIYSCIiIiIiIiIiooQwkERERERERERERAlhIImIiIiIiIiIiBLCQBIRERERERERESWEgSQiIiIiIiIiIkoIA0lERERERERERJQQBpKIiIiIiIiIiCghDCQREREREREREVFCGEgiIiIiIiIiIqKEMJBEREREREREREQJYSCJiIiIiIiIiIgSwkASERERERERERElhIEkIiIiIiIiIiJKCANJRERERERERESUEAaSiIiIiIiIiIgoIQwkERERERERERFRQhhIIiIiIiIiIiKihDCQRERERERERERECWEgiYiIiIiIiIiIEsJAEhERERERERERJYSBJCIiIiIiIiIiSggDSURERERERERElBAGkoiIiIiIiIiIKCEMJBERERERERERUUIYSCIiIiIiIiIiooQwkERERERERERERAlhIImIiIiIiIiIiBLCQBIRERERERERESWEgSQiIiIiIiIiIkoIA0lERERERERERJQQBpKIiIiIiIiIiCgBwP8HkHekixZnCssAAAAASUVORK5CYII=AzDUXSdAlnjRAAAAAElFTkSuQmCC



Lec12

wIdTfgtv8+yOgAAAABJRU5ErkJggg==vGzfvUvL+jMD8NFeVNf5+rTwSsrI9FG+Zg6Uy7B9KZAP4fokLsLel1BtkAAAAASUVORK5CYII=

Lec7

Design goals

Design principles

Design patterns

Anti-patterns

Design heuristics

Lec8

1. Dynamic Dispatch: At compile time determine which class to look in and method signature to be executed. At run time, determine dynamic class (the actual class not interface) of the receiver and which method to invoke
2. Final Keyword: final class prevents extending the class, final method prevents overriding the method, final field prevents reassignment after initialization
3. Behavioral Subtyping: same or stronger invariants than super class, same or weaker preconditions for all methods than super class, same or stronger postconditions for all methods in super class.
     a) Square is not a behavioral subtype of rectangle