$30 off During Our Annual Pro Sale. View Details »

CSC307 Lecture 07

CSC307 Lecture 07

Introduction to Software Engineering
Clean Coding
(202307)

Javier Gonzalez-Sanchez
PRO

July 02, 2023
Tweet

More Decks by Javier Gonzalez-Sanchez

Other Decks in Programming

Transcript

  1. jgs
    CSC 307
    Introduction to Software Engineering
    Lecture 07:
    Clean Coding
    Dr. Javier Gonzalez-Sanchez
    [email protected]
    www.javiergs.com
    Building 14 -227
    Office Hours: By appointment

    View Slide

  2. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 2
    § Modeling or Design
    § Construction or Coding
    Activities

    View Slide

  3. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 3
    Java API + Tutorials

    View Slide

  4. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 4
    Key Ideas
    DRY
    KIS
    Readable
    (comments, names, spaces,…)

    View Slide

  5. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 5
    Whiteboard

    View Slide

  6. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 6
    Relationships
    Association Directed
    Association
    Reflexive
    Association
    Multiplicity
    Aggregation Composition Generalization Realization

    View Slide

  7. jgs
    GUI in Java
    Swing and AWT Libraries

    View Slide

  8. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 8
    import javax.swing.*;
    public class Example extends JFrame{
    public static void main(String[] args) {
    Example frame = new Example();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500,500);
    frame.setVisible(true);
    }
    }
    Method main()

    View Slide

  9. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 9
    import javax.swing.*;
    public class Example extends JFrame{
    public Example() {
    super("Hello World Swing");
    GridLayout layout = new GridLayout(3,2);
    setLayout(layout);
    JLabel label = new JLabel("Hello World");
    add(label);
    JButton button = new JButton("Click Me");
    add(button);
    JTextField text = new JTextField("Text", 10);
    add(text);
    JCheckBox check = new JCheckBox("Option");
    add(check);
    }
    public static void main(String[] args) {
    Example frame = new Example();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500,500);
    frame.setVisible(true); }
    }
    Layouts

    View Slide

  10. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 10
    import javax.swing.*;
    public class Example extends JFrame{
    public Example() {
    super("Hello World Swing");
    BorderLayout layout = new BorderLayout();
    setLayout(layout);
    JLabel label = new JLabel("Hello World");
    add(label, BorderLayout.CENTER);
    JButton button = new JButton("Click Me");
    add(button , BorderLayout.SOUTH);
    JTextField text = new JTextField("Text", 10);
    add(text , BorderLayout.NORTH);
    JCheckBox check = new JCheckBox("Option");
    add(check , BorderLayout.EAST);
    }
    public static void main(String[] args) {
    Example frame = new Example();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500,500);
    frame.setVisible(true); }
    }
    Layouts

    View Slide

  11. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 11
    JPanel
    2

    View Slide

  12. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 12
    Pseudo Calculator

    View Slide

  13. jgs
    More About GUI
    Drawing in a Panel

    View Slide

  14. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 14
    Extending JPanel

    View Slide

  15. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 15
    Extending JPanel

    View Slide

  16. jgs
    Connecting the Dots

    View Slide

  17. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 17
    Step 1

    View Slide

  18. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 18
    Step 2

    View Slide

  19. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 19
    Step 3. Undo

    View Slide

  20. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 20
    Step 4. Erase

    View Slide

  21. jgs
    Let’s Do This
    Events and Listeners

    View Slide

  22. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 22
    Release 1. GUI

    View Slide

  23. View Slide

  24. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 24
    Release 2. Action Listeners

    View Slide

  25. View Slide

  26. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 26
    Release 3. Draw Area

    View Slide

  27. View Slide

  28. View Slide

  29. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 29
    Release 4. Mouse Listeners

    View Slide

  30. View Slide

  31. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 31
    § public void mousePressed (MouseEvent e) {}
    § public void mouseClicked(MouseEvent e) { }
    § public void mouseReleased(MouseEvent e) { }
    § public void mouseEntered(MouseEvent e) { }
    § public void mouseExited(MouseEvent e) { }
    § public void mouseDragged(MouseEvent me) { }
    § public void mouseMoved(MouseEvent e) { }
    MouseListener

    View Slide

  32. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 32
    § public void mouseDragged(MouseEvent me) { }
    § public void mouseMoved(MouseEvent e) { }
    MouseMotionListener

    View Slide

  33. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 33
    Release 5. Draw + Mouse

    View Slide

  34. View Slide

  35. jgs
    One Last Thing
    Drag and Drop

    View Slide

  36. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 36
    Demo

    View Slide

  37. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 37
    Main.java

    View Slide

  38. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 38
    Workspace.java (part 1 / 2)

    View Slide

  39. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 39
    Workspace.java (part 2 / 2)

    View Slide

  40. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 40
    City.java (part 1 / 2)

    View Slide

  41. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 41
    City.java (part 2 /2)

    View Slide

  42. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 42
    Let’s Work

    View Slide

  43. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 43
    Questions

    View Slide

  44. jgs
    Javier Gonzalez-Sanchez | CSC 308 | Winter 2023 | 44
    Office Hours
    Tuesday and Thursday 3 - 5 pm
    But an appointment required
    Sent me an email – [email protected]

    View Slide

  45. jgs
    CSC 307 Introduction to Software Engineering
    Javier Gonzalez-Sanchez, Ph.D.
    [email protected]
    Summer 2023
    Copyright. These slides can only be used as study material for the class CSC308 at Cal Poly.
    They cannot be distributed or used for another purpose.

    View Slide