Slide 1

Slide 1 text

Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.info o ffi ce: 14 -227 CSC 305 Individual Software Design and Development Lecture 25. Final Review

Slide 2

Slide 2 text

Announcements 2 * Final Exam December 6 (Lab Time) * Final Project Due by December 11 (no extensions) I will provide details on Wednesday.

Slide 3

Slide 3 text

Disclaimer

Slide 4

Slide 4 text

Disclaimer for Final Exam Review The f in a l ex a m is comprehensive, encomp a ssing a ll course m a teri a ls. This review covers only a subset of topics. Import a nt: • Ensure you review a ll lecture slides a nd course m a teri a ls. • The following slides include ex a mples rel a ted to selected topics. • This is NOT a n exh a ustive list of ex a m topics. 4

Slide 5

Slide 5 text

Grading

Slide 6

Slide 6 text

Grading 6 Project

Slide 7

Slide 7 text

Grading

Slide 8

Slide 8 text

Clean Coding Lectures 1 - 3, 9

Slide 9

Slide 9 text

Lecture 01 Read: https://google.github.io/styleguide/javaguide.html

Slide 10

Slide 10 text

Lecture 02, 03. Clean Coding SRP DRY KIS Errors Readability Comments DI

Slide 11

Slide 11 text

Lecture 02, 03 • Cle a n code is re a d a ble, m a int a in a ble, a nd follows principles like SRP, DRY, a nd DI. • Be re a dy to a nswer multiple-choice teoretic a l questions • Be re a dy to a pply them on open-questions (coding) • Apply these in your Fin a l Project. 11

Slide 12

Slide 12 text

Example 12

Slide 13

Slide 13 text

Lecture 09 - Assignment Re a d a bility • DRY • KIS • SRP • Comments • Error H a ndling with a Logger 13 Metrics • LOC (eLOC, lLOC) • CC • A • I • D

Slide 14

Slide 14 text

What do you think of the following? 14

Slide 15

Slide 15 text

Dependencies Lectures 4

Slide 16

Slide 16 text

Lecture 04 • Dependency m a n a gement in J a v a . • M a ven simpli f ies dependency m a n a gement by a utom a tic a lly downlo a ding required libr a ries a nd their dependencies using a project object model (POM) f ile. • Students were t a sked with running a n ex a mple a nd re f lecting on whether the ex a mples a lign with cle a n coding principles. 16

Slide 17

Slide 17 text

Lecture 04 17

Slide 18

Slide 18 text

Logging Lectures 5, 24

Slide 19

Slide 19 text

Lecture 05, 24 19 trace() debug() info () warn () error() message 01 message 02 message 03 message 04 message 05 Logger Appender Appender Appender Encoder Encoder

Slide 20

Slide 20 text

Lecture 05, 24 20 WE6x9ya1dfMwRTouP9DEB https://github.com/CSC3100/Tool-Logging

Slide 21

Slide 21 text

Lecture 05, 24 • The import a nce of logging for recording events a nd mess a ges during a progr a m’s execution • Using SLF4J with Logb a ck • Log levels (TRACE, DEBUG, INFO, WARN, ERROR) • Utilizing ConsoleAppender a nd FileAppender • You h a ve integr a ted logging into their Tic-T a c-Toe project. Ex a mples a nd reus a ble code were provided through our GitHub repository. 21

Slide 22

Slide 22 text

Logging Lectures 6 - 8

Slide 23

Slide 23 text

Metrics Size LOC eLOC lLOC Complexity Cyclomatic Complexity Lecture 06 - 08 23

Slide 24

Slide 24 text

Lecture 06 - 08 24 Abstract Concrete Stable Hard to Change Only incoming dependencies Unstable Changeable Only outgoing dependencies the main sequence Painful Useless 0 1 1 0 Instability Abstractness

Slide 25

Slide 25 text

Lecture 06 - 08 - Is this a good design? 25

Slide 26

Slide 26 text

Question 26

Slide 27

Slide 27 text

Design Lectures 10

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Lecture 10 29

Slide 30

Slide 30 text

Examples • Type A. What is the problem solved using ________________________ ? • Type B. Program the following in an standard way: “A Dashboard show information about stock prices; prices are available to be downloaded from a broker (postal office). A Genius need access to the stock prices to calculate good investment recommendations” 30

Slide 31

Slide 31 text

To be continued…

Slide 32

Slide 32 text

Design Patterns Lectures 11-19

Slide 33

Slide 33 text

Observer 33

Slide 34

Slide 34 text

Singleton 34

Slide 35

Slide 35 text

Composite 35

Slide 36

Slide 36 text

Strategy 36

Slide 37

Slide 37 text

Questions 37 New 1st-click 2nd-click 3rd-click 4th-click

Slide 38

Slide 38 text

Challenges Lectures 20

Slide 39

Slide 39 text

Idea 1 39 Main Factory Gift Ball Box Envelop Handler Supervisor Bin

Slide 40

Slide 40 text

To Code 40

Slide 41

Slide 41 text

Example 41

Slide 42

Slide 42 text

Example 42

Slide 43

Slide 43 text

Your Final Project Lectures 21

Slide 44

Slide 44 text

Step 8: JTabbedPane 44 File Box Connector Student Cat Store Food 👀 O P F 👀 O Main Person

Slide 45

Slide 45 text

Step 9: Generate Text (Code in Java) 45 File Box Connector public class Cat C a t O 👀 } { implements PropertyChangeListener extends PropertyChangeSupport

Slide 46

Slide 46 text

Distrubuted System Design Lectures 22, 23

Slide 47

Slide 47 text

Client-Server 47

Slide 48

Slide 48 text

Message Queuing (Topics) 48

Slide 49

Slide 49 text

Questions 49 https://github.com/CSC3100/Pong-Game

Slide 50

Slide 50 text

Questions 50

Slide 51

Slide 51 text

CSC 305 Individual Software Design and Development Javier Gonzalez-Sanchez, Ph.D. [email protected] Summer 2024 Copyright. These slides can only be used as study material for the class CSC305 at Cal Poly. They cannot be distributed or used for another purpose.