Slide 1

Slide 1 text

jgs CSE 460 Software Analysis and Design Lecture 15: Practice Dr. Javier Gonzalez-Sanchez [email protected] javiergs.engineering.asu.edu | javiergs.com PERALTA 230U Office Hours: By appointment

Slide 2

Slide 2 text

jgs Proctoring Respondus LockDown Browser

Slide 3

Slide 3 text

jgs 00000001 Proctoring

Slide 4

Slide 4 text

jgs 00000001 Proctoring You need A camera

Slide 5

Slide 5 text

jgs 00000001 Proctoring

Slide 6

Slide 6 text

jgs 00000001 Agenda § Sample Exam is available. Test your system ASAP § Read the Online Proctored Exam Guidelines to know what to do in case of a problem during the exam § Midterm Exam available March 10 only during lecture time from 4:30 pm to 5:45 pm. § No lecture that day. Go directly to your exam § It is a CLOSED BOOK exam. Do not use any material § Scratch paper is allowed. Empty White Paper. Show it on camera when you show your environment!

Slide 7

Slide 7 text

jgs Previously …

Slide 8

Slide 8 text

jgs 00000001 GoF Patterns

Slide 9

Slide 9 text

jgs Extra Example 1 Text Mode

Slide 10

Slide 10 text

jgs 00000001 Decorator

Slide 11

Slide 11 text

jgs 00000001 Main

Slide 12

Slide 12 text

jgs 00000001 Companion public interface Companion { public void doSomething(); }

Slide 13

Slide 13 text

jgs 00000001 BasicCompanion public class BasicCompanion implements Companion { @Override public void doSomething() { System.out.print("Hello Student, "); } }

Slide 14

Slide 14 text

jgs 00000001 CompanionDecorator public class CompanionDecorator implements Companion { protected Companion c; public void add(Companion c){ this.c = c; } @Override public void doSomething() { this.c.doSomething(); } }

Slide 15

Slide 15 text

jgs 00000001 HelperCompanion public class HelperCompanion extends CompanionDecorator { @Override public void doSomething(){ super.doSomething(); System.out.print(" I am here to help you. "); } }

Slide 16

Slide 16 text

jgs 00000001 AffectiveCompanion public class AffectiveCompanion extends CompanionDecorator { @Override public void doSomething(){ super.doSomething(); System.out.print(" I am here to cheer you."); } }

Slide 17

Slide 17 text

jgs 00000001 Main

Slide 18

Slide 18 text

jgs Extra Example 2 Adding a GUI

Slide 19

Slide 19 text

jgs 00000001 GUI

Slide 20

Slide 20 text

jgs 00000001 Decorator

Slide 21

Slide 21 text

jgs 00000001 Main import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class Main extends JFrame implements ActionListener { CompanionPanel panel = new CompanionPanel (); JButton b1 = new JButton("standard"); JButton b2 = new JButton("help"); JButton b3 = new JButton("affect"); JButton b4 = new JButton("helper+affect"); public Main() { setLayout(new BorderLayout(3,2)); add (panel, BorderLayout.CENTER); JPanel control = new JPanel(new GridLayout(1,4)); control.add (b1); b1.addActionListener(this); control.add (b2); b2.addActionListener(this); control.add (b3); b3.addActionListener(this); control.add (b4); b4.addActionListener(this); add (control, BorderLayout.SOUTH); }

Slide 22

Slide 22 text

jgs @Override public void actionPerformed(ActionEvent e) { if (e.getSource()==b1) { BasicCompanion basic = new BasicCompanion(); panel.setCompanion(basic); panel.showYourself(); } else if (e.getSource()==b2) { BasicCompanion basic = new BasicCompanion(); HelperCompanion helper = new HelperCompanion(); helper.add(basic); panel.setCompanion(helper); panel.showYourself(); } else if (e.getSource()==b3) { BasicCompanion basic = new BasicCompanion(); AffectiveCompanion h = new AffectiveCompanion(); h.add(basic); panel.setCompanion(h); panel.showYourself(); } else if (e.getSource()==b4) { HelperCompanion helper2 = new HelperCompanion(); AffectiveCompanion affective = new AffectiveCompanion(); BasicCompanion basic2 = new BasicCompanion(); helper2.add(affective); affective.add(basic2); panel.setCompanion(helper2);panel.showYourself(); } } public static void main(String[] args) { JFrame main = new Main(); main.setSize(500,500); main.setVisible(true); main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

Slide 23

Slide 23 text

jgs 00000001 CompanionPanel import java.awt.GridLayout; import javax.swing.JLayeredPane; public class CompanionPanel extends JLayeredPane{ public Companion brain; public void setCompanion(Companion x) { brain = x; } public void showYourself() { removeAll(); setLayout(new GridLayout(1,1)); brain.doSomething(this); revalidate(); } }

Slide 24

Slide 24 text

jgs 00000001 Companion import javax.swing.JComponent; public interface Companion { public void doSomething(JComponent panel); }

Slide 25

Slide 25 text

jgs 00000001 BasicCompanion import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JLabel; public class BasicCompanion implements Companion { @Override public void doSomething(JComponent panel) { ImageIcon face = new ImageIcon("src/face.png"); JLabel label = new JLabel(); label.setIcon(face); label.setHorizontalTextPosition(JLabel.CENTER); label.setVerticalTextPosition(JLabel.BOTTOM); label.setText("Hello Student, "); panel.add(label); } }

Slide 26

Slide 26 text

jgs 00000001 CompanionDecorator import javax.swing.JComponent; public class CompanionDecorator implements Companion { protected Companion c; public void add(Companion c){ this.c=c; } @Override public void doSomething(JComponent panel) { this.c.doSomething(panel); } }

Slide 27

Slide 27 text

jgs 00000001 AffectiveCompanion import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JLabel; public class AffectiveCompanion extends CompanionDecorator { @Override public void doSomething(JComponent panel){ super.doSomething(panel); ImageIcon face = new ImageIcon("src/cheer.png"); JLabel label = new JLabel(); label.setIcon(face); label.setHorizontalTextPosition(JLabel.CENTER); label.setVerticalTextPosition(JLabel.BOTTOM); label.setText("I am here to cheer you."); panel.add(label); } }

Slide 28

Slide 28 text

jgs 00000001 HelperCompanion import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JLabel; public class HelperCompanion extends CompanionDecorator { @Override public void doSomething(JComponent panel){ super.doSomething(panel); ImageIcon face = new ImageIcon("src/bubble.png"); JLabel label = new JLabel(); label.setIcon(face); label.setHorizontalTextPosition(JLabel.CENTER); label.setVerticalTextPosition(JLabel.BOTTOM); label.setText("I am here to help you."); panel.add(label); } }

Slide 29

Slide 29 text

jgs 00000001 GUI

Slide 30

Slide 30 text

jgs Let us Practice

Slide 31

Slide 31 text

jgs 00000001 Practice

Slide 32

Slide 32 text

jgs 00000001 Part 1

Slide 33

Slide 33 text

jgs 00000001 Part 2

Slide 34

Slide 34 text

jgs CSE 460 Software Analysis and Design Javier Gonzalez-Sanchez [email protected] Fall 2020 Disclaimer. These slides can only be used as study material for the class CSE460 at ASU. They cannot be distributed or used for another purpose.