Download presentation
Presentation is loading. Please wait.
Published byGertrude Leslie Gilmore Modified over 9 years ago
1
Nelson Series Talk Wed, 11/10 7:00 pm Security, Liberties and Trade-offs in the War on Terrorism Since 9/11, we have enacted the Patriot Act, tighter screening at airports, a proposed national I.D. card system, a color-coded national alert system, irradiated mail, and a Department of Homeland Security, but do all of these things really make us any less vulnerable to another terrorist attack? Security expert Bruce Schneier evaluates the systems that we have in place post-9/11, revealing which of them actually work and which ones are simply "security theater." Learn why most security measures don't work and never will, why bad security is worse than none at all, and why strong security means learning how to fail well. Most of all, learn how you can take charge of your own security - personal, family, corporate, and national. Bruce Schneier http://www.counterpane.com/ http://www.schneier.com/ Bruce Schneier is an internationally renowned security expert. He is the author of eight books--including the best sellers "Beyond Fear: Thinking Sensibly about Security in an Uncertain World," "Secrets and Lies," and "Applied Cryptography"--as well as the Blowfish and Twofish encryption algorithms. His influential newsletter, Crypto- Gram, is read by over 100,000 people.
2
Week 10 in CS 5 HW 10 (2 problems) M/T sections W/Th sections due Sunday, 11/7 at midnight due Monday, 11/8 at midnight Caution: This is very new stuff… Come to recitation (Fri @ 8) for help! Object-oriented programming We’re breaking out of the CS5App class class CS5App { public static void main(String[] args) … Hw10 Pr1: Connect FourHw10 Pr2: Virtual Art! Midterm #2 next Friday, 11/12 PAIR Lab: A-L Wolfgang Puck: not an object-oriented chef!
3
Gaussian Elimination public static void solve(double[][] A) { for (int c=0 ; c<A[0].length-1 ; ++c) // columns { multRow( A, c, 1/A[c][c] ); // diag = 1.0 for (int r=0 ; r<A.length ; ++r) // rows { if (c != r) // off-diagonal elements become 0.0 { addMxRaToRb( A, -A[r][c], c, r ); } dest row dest row source row multiplier
4
Arrays: the good and bad + - lots of computer work for little programmer work! Not everything is a bunch of identical boxes! only one built-in capability: length you have to use the array’s naming convention A[r][c] Classes and Objects take care of all 3 drawbacks... int[] int A A[0]A[1] A[2]
5
Classes & Objects An object-oriented programming language allows you to build your own customized types of variables. (1) A class is a type of variable. (2) An object is one such variable.
6
But Why ? Flexibility Reusability Abstraction ordinary data structures create-your-own write once, take anywhere worry once, use anywhere
7
Java’s Library of Classes java.sun.com/j2se/1.4.2/docs/api/index.html ~ 3000 classes available details on the data and methods that each class offers…
8
Course c void addStudent(String s) String String[] double int name npeople clist hours int numStudents() String Names! Objects An object is a data structure (like an array), except (1) Its data elements need not be the same type. (2) Its data elements have names chosen by the programmer. (3) Its data can be protected from unauthorized changes! (4) An object can have behaviors built-in by the programmer.
9
if (s.equals(“I’m an object!”)) { s2 = “Ask me to do something!”; } int L = s2.length(); char c = s2.charAt(22); the equals method is a built-in capability of String objects You’ve done all this before... the dot indicates selection or containment 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 String s = “I’m an object!”; String s2 = “I’m another object!”; nonstatic methods are called by an object another nonstatic method static methods are called by a class, e.g. Math.sqrt(d);
10
Classes v Objects: some examples (1) A class is a type of variable. String s = “I’m an object!”; (2) An object is such a variable. the classes are in bluethe objects are in green Board b = new Board(6,7); Date d = new Date(11,13,2004); special constructor methods used with new Course c = new Course(“cs5”); Course c2 = new Course(“chem”); Date d2 = new Date(11,25,2004); Strings are used so much new is not required…
11
Coding classes and objects: in main Course c void addStudent(String s) String[] double int npeople clist hours int numEnrolled() String Course(String name) data methods “constructor” public static void main(String[] args) { Course c = new Course(“cs5”); // construct c c.addStudent(“Michael”); // add a student H.pl(c.numEnrolled()); // print enrollment: 1 … String name
12
class Course { private String name; private int npeople; private double hours; private String[] clist; public Course(String n) { this.name = n; this.clist = new String[42]; this.npeople = 0; this.hours = 3.0; } public void addStudent(String s) { this.clist[npeople++] = s; } public int numEnrolled() { return this.npeople; } } data members constructor methods Coding classes and objects: in Course
13
class Course { private String name; private int npeople; private double hours; private String[] clist; public Course(String n) { this.name = n; this.clist = new String[42]; this.npeople = 0; this.hours = 3.0; } public void addStudent(String s) { this.clist[npeople++] = s; } public int numEnrolled() { return this.npeople; } } data members the object being constructed data protection ! constructor refers to the object calling the method methods Coding classes and objects: in Course
14
Course c2 public static void main(String[] args) { Course c = new Course(“cs5”); // construct c c.addStudent(“Michael”); // add a student to c Course c2 = new Course(“chem”); // construct c2 c2.addStudent(“Marie”); // add a student to c2 Two (or more) objects of the same class… Course c
15
class Course { private String name; private int npeople; private double hours; private String[] clist; public Course(String n) { this.name = n; this.clist = new String[42]; this.npeople = 0; this.hours = 3.0; } public void addStudent(String s) { this.clist[npeople++] = s; } public int numEnrolled() { return this.npeople; } } data members constructor methods Coding classes and objects: in Course this is sort of a pain…
16
this is optional ! class Course { private String name; private int npeople; private double hours; private String[] clist; public Course(String n) { name = n; clist = new String[42]; npeople = 0; hours = 3.0; } public void addStudent(String s) { clist[npeople++] = s; } public int numEnrolled() { return npeople; } } data members constructor methods but it is always there…
17
Connect Four For your convenience, the creators of Java’s library have included a Board class that can represent any size Connect Four board... ! | | | | | | | |X| | | | | |X| |X|O| | | |X|O|O|O|X| |O| --------------- 0 1 2 3 4 5 6 0 1 2 3 4 5 0 1 2 3 4 5
18
Connect Four: class Board, object b This is true for sufficiently broad definitions of “the creators of Java’s library”... Board b void addMove(int c, char player) int nrows int ncols boolean allowsMove(int c) char data char[][] char
19
Board Starting code for a Board class and CS5App class is in Hw10Pr1.zip class Board { private int nrows; private int ncols; private char[][] data; public Board(int R, int C) { this.nrows = R; this.ncols = C; this.data = new char[nrows][ncols]; for (int r=0 ; r<this.nrows ; ++r) for (int c=0 ; c<this.ncols ; ++c) this.data[r][c] = ‘ ’; } public void addMove(int c, char player) … public boolean allowsMove(int c) … 3 data members constructor methods
20
class CS5App { public static void main(String[] args) { H.pl(“Hi! Welcome to Connect 4…”); int R = H.ni(“How many rows?(4-15)”); int C = H.ni(“How many columns? (4-15)”); Board b = new Board(R,C); char player = 'X'; while (true) { b.print(); int uc = H.ni(player + “'s move:”); while ( !b.allowsMove(uc) ) uc = H.ni(player + “'s move:”); b.addMove(uc,player); if (player == 'X') player = '0'; else player = 'X'; } // end of while } // end of main } // end of class CS5App “Quiz” What is each portion of main doing? 1 2 3 4 What still needs to be done?
21
class Board { private int nRows; private int nCols; private char[][] data; // constructor and other methods here public void addMove(int c, char player) { for (int r=this.nRows-1 ; r>=0 ; --r) { if (this.data[r][c] == ‘ ’) { this.data[r][c] = player; break; } public boolean allowsMove(int c) { } What is each line of addMove doing? Write allowsMove. It should return true if c is OK for a move; false otherwise. 1 2 3 4 “Quiz,” part 2
22
Problem 1 Similar to Lights Out and Life, but using a Board object: main class CS5App sets things up and runs a large while loop class Board Board allowsMove print addMove isFull winsFor the “constructor” checks if allowed places a checker outputs to screen checks if space left checks if a player has won Hw10 Pr1: Connect Four (1)Get the # of rows and cols (R, C) (2)Create an object, b, of type Board (3) Big while loop... (1)Ask for the next player’s move (2)Check the move & then make it (3)See if the game is over Board b = new Board(R,C);
23
Problem 1 Similar to Lights Out and Life, but using a Board object: main class CS5App sets things up and runs a large while loop class Board Board allowsMove print addMove isFull winsFor the “constructor” checks if allowed places a checker outputs to screen checks if space left checks if a player has won Hw10 Pr1: Connect Four (1)Get the # of rows and cols (R, C) (2)Create an object, b, of type Board (3) Big while loop... (1)Ask for the next player’s move (2)Check the move & then make it (3)See if the game is over Board b = new Board(R,C); QUIZ still to do…
24
Problem 1 Still to write in the Board class: public boolean isFull() public boolean winsFor(char pl) 1 2 Extra Credit: Mouse input
25
Problem 2 Similar to previous menu problems, but using Date objects: (0) Enter a new date of interest (1) Print the current date of interest (2) Move one day forward in time (3) Move one day backward in time (4) Day difference finder (5) Find the day of the week (9) Quit main class CS5App sets things up and runs a large while loop printMenu prints Methods Hw10 Pr2: The Date Calculator Pair Programming Problem
26
Problem 2 Similar to previous menu problems, but using Date objects: (0) Enter a new date of interest (1) Print the current date of interest (2) Move one day forward in time (3) Move one day backward in time (4) Day difference finder (5) Find the day of the week (9) Quit main class CS5App sets things up and runs a large while loop printMenu prints Methods Hw10 Pr2: The Date Calculator PAIR no computer required… Prof. Art Benjamin
27
Problem 2 Similar to previous menu problems, but using Date objects: (0) Enter a new date of interest (1) Print the current date of interest (2) Move one day forward in time (3) Move one day backward in time (4) Day difference finder (5) Find the day of the week (9) Quit main class CS5App sets things up and runs a large while loop class Date Date printMenu prints print yesterday tomorrow isBefore diff dayOfWeek the “constructor” prints forward 1 day backward 1 day helper method # of days difference between 2 Date s returns a String Methods Hw10 Pr2: The Date Calculator PAIR diffNoPrint same w/ no printing
28
Two Date objects: d and d2 int month Date d void print() int year void tomorrow() int day int month Date d2 void print() int year void tomorrow() int day
29
The Date class class Date { private int month; private int day; private int year; public Date(int m, int d, int y) { this.month = m; this.day = d; this.year = y; } public void print() { H.p(this.month + “/”); H.p(this.day + “/”); H.p(this.year); } data members method constructor
30
Making a new Date class CS5App { public static void main(String[] args) { Date d = new Date(11,13,2004); Date d2 = new Date(11,25,2004); H.p(“The ACM contest is on ”); d.print(); d.tomorrow(); H.p(“CS 5’s midterm is due on ”); d.print(); H.p(“And Thanksgiving will be ”); d2.print(); }
31
Making a new Date class CS5App { public static void main(String[] args) { Date d = new Date(11,13,2004); Date d2 = new Date(11,25,2004); H.p(“The ACM contest is on ”); d.print(); d.tomorrow(); H.p(“CS 5’s midterm is due on ”); d.print(); H.p(“And Thanksgiving will be ”); d2.print(); } 11/13/2004 Output
32
Making a new Date class CS5App { public static void main(String[] args) { Date d = new Date(11,13,2004); Date d2 = new Date(11,25,2004); H.p(“The ACM contest is on ”); d.print(); d.tomorrow(); H.p(“CS 5’s midterm is due on ”); d.print(); H.p(“And Thanksgiving will be ”); d2.print(); } 11/13/2004 Output 11/14/2004
33
Making a new Date class CS5App { public static void main(String[] args) { Date d = new Date(11,13,2004); Date d2 = new Date(11,25,2004); H.p(“The ACM contest is on ”); d.print(); d.tomorrow(); H.p(“CS 5’s midterm is due on ”); d.print(); H.p(“And Thanksgiving will be ”); d2.print(); } 11/13/2004 Output 11/14/2004 11/25/2004
34
tomorrow() class Date { public void tomorrow() { } int day int year int month data members in every Date
35
Checking a Date class CS5App { public static void main(String[] args) { // prompt the user for mo, dy, yr: int mo = H.ni(); int dy = H.ni(); int yr = H.ni(); Date d = new Date(mo,dy,yr); if (d.isLeapYear()) H.pl(“d has 366 days”); else H.pl(“d has 365 days”); }
36
Leap years class Date { public boolean isLeapYear() { if (this.year % 400 == 0) return true; if (this.year % 100 == 0) return false; if (this.year % 4 == 0) return true; } int day int year int month only one of these is needed here…
37
Comparing Date s class CS5App { public static void main(String[] args) { Date d = new Date(11,13,2004); Date d2 = new Date(11,25,2004); if (d.isBefore(d2)) H.pl(“d is earlier than d2”); else H.pl(“d is not earlier than d2”); }
38
Comparing Date s class Date { public boolean isBefore(Date d2) { } What two dates are being compared here? d2 is only one of them!
39
Problem 2 “Tricks” public int diff(Date d); returns the # of days between this and d positive if d is after this negative if d is before this print every day in between! public String dayOfWeek(); returns the day of the week on which this falls
40
Summary/Examples An object is a variable. Objects are created via new and a constructor. A class is a type of variable. A class can include both data members and methods. The object that calls a method is named this inside that method. class Date { private int month; private int day; private int year; public Date(int m, int d, int y) { this.month = m; this.day = d; this.year = y; } public void print() { H.p(this.month + “/” + this.day + “/” + this.year); } Date d = new Date(11,10,2003);
41
Lab this week Problem 2: The Date Calculator (Pairs) You’ll need to write (and use) Problem 1: Connect 4 ! Extra Credit: Mouse input-handling for Connect Four Last Names A-L Date print tomorrow yesterday isBefore diff diffNoPrint dayOfWeek … | | | | | | | |X| | | | | |X| |X|O| | | |X|O|O|O|X| | | --------------- 0 1 2 3 4 5 6 isFull winsFor allowsMove
42
Example contest problem Factorial Factors - Southern California Regional ACM Programming Contest The factorial function, n! = 1 · 2 ·... · n, has many interesting properties. In this problem, we want to determine the maximum number of integer terms (excluding 1) that can be used to express n!. For example: 8! = 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 = 2 · 3 · 2 · 2 · 5 · 3 · 2 · 7 · 2 · 2 · 2 = 27 · 32 · 5 · 7 By inspection, it is clear that the maximum number of terms (excluding 1) that can be multiplied together to produce 8! is 11. The input for your program consists of a series of test cases on separate lines. Each line contains one number, n, 2 <= n <= 1000000. For each test case, print the maximum number of factors (excluding 1) that can be multiplied together to produce n!. Put the output from each test case on a separate line, starting in the first column. Sample Input 2 1000000 1996 5 8 123456 Sample Output 1 3626619 5957 5 11 426566
43
Objects An object is a data structure (like an array), except (1) Its data elements need not be the same type. (2) Its data elements have names chosen by the programmer. (3) Its data can be protected from unauthorized changes! (4) An object can have behaviors built-in by the programmer. Course c void addStudent(String s) String String[] double int name number students hours int numStudents() String Names! the dot is used to get at parts of an object (data or actions)
44
slides to print following this…
45
Gaussian Elimination public static void solve(double[][] A) { for (int c=0 ; c<A[0].length-1 ; ++c) // columns { multRow( A, c, 1/A[c][c] ); // diag = 1.0 for (int r=0 ; r<A.length ; ++r) // rows { if (c != r) // off-diagonal elements become 0.0 { addMxRaToRb( A, -A[r][c], c, r ); } dest row dest row source row multiplier
46
Course c void addStudent(String s) String String[] double int name npeople clist hours int numStudents() String Names! Objects An object is a data structure (like an array), except (1) Its data elements need not be the same type. (2) Its data elements have names chosen by the programmer. (3) Its data can be protected from unauthorized changes! (4) An object can have behaviors built-in by the programmer.
47
Coding classes and objects: in main Course c void addStudent(String s) String[] double int npeople clist hours int numEnrolled() String Course(String name) data methods “constructor” public static void main(String[] args) { Course c = new Course(“cs5”); // construct c c.addStudent(“Michael”); // add a student H.pl(c.numEnrolled()); // print enrollment: 1 … String name
48
Connect Four For your convenience, the creators of Java’s library have included a Board class that can represents any size of Connect Four board... ! | | | | | | | |X| | | | | |X| |X|O| | | |X|O|O|O|X| |O| --------------- 0 1 2 3 4 5 6 0 1 2 3 4 5 0 1 2 3 4 5
49
class CS5App { public static void main(String[] args) { H.pl(“Hi! Welcome to Connect 4…”); int R = H.ni(“How many rows?(4-15)”); int C = H.ni(“How many columns? (4-15)”); Board b = new Board(R,C); char player = 'X'; while (true) { b.print(); int uc = H.ni(player + “'s move:”); while ( !b.allowsMove(uc) ) uc = H.ni(player + “'s move:”); b.addMove(uc,player); if (player == 'X') player = '0'; else player = 'X'; } // end of while } // end of main } // end of class CS5App “Quiz” What is each portion of main doing? 1 2 3 4 What still needs to be done?
50
class Board { private int nRows; private int nCols; private char[][] data; // constructor and other methods here public void addMove(int c, char player) { for (int r=this.nRows-1 ; r>=0 ; --r) { if (this.data[r][c] == ‘ ’) { this.data[r][c] = player; break; } public boolean allowsMove(int c) { } What is each line of addMove doing? Write allowsMove. It should return true if c is OK for a move; false otherwise. 1 2 3 4 “Quiz,” part 2
51
Problem 1 Still to write in the Board class: public boolean isFull() public boolean winsFor(char pl) 1 2 Extra Credit: Mouse input
52
Two Date objects: d and d2 int month Date d void print() int year void tomorrow() int day int month Date d2 void print() int year void tomorrow() int day
53
tomorrow() class Date { public void tomorrow() { } int day int year int month data members in every Date
54
Leap years class Date { public boolean isLeapYear() { if (this.year % 400 == 0) return true; if (this.year % 100 == 0) return false; if (this.year % 4 == 0) return true; } int day int year int month only one of these is needed here…
55
Comparing Date s class Date { public boolean isBefore(Date d2) { } What two dates are being compared here? d2 is only one of them!
56
Problem 2 “Tricks” public int diff(Date d); returns the # of days between this and d positive if d is after this negative if d is before this print every day in between! public String dayOfWeek(); returns the day of the week on which this falls
57
Lab this week Problem 2: The Date Calculator (Pairs) You’ll need to write (and use) Problem 1: Connect 4 ! Extra Credit: Mouse input-handling for Connect Four Last Names A-L Date print tomorrow yesterday isBefore diff diffNoPrint dayOfWeek … | | | | | | | |X| | | | | |X| |X|O| | | |X|O|O|O|X| | | --------------- 0 1 2 3 4 5 6 isFull winsFor allowsMove
58
Course c void addStudent(String s) String String[] double int name npeople clist hours int numEnrolled() String Course(String name) data methods “constructor” public static void main(String[] args) { Course c = new Course(“cs5”); // construct c c.addStudent(“Michael”); // add a student H.pl(c.numEnrolled()); // print enrollment: 1 “cs5” 13.0 “Michael” … Coding classes and objects: in main
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.