1 / 43

Java Programming

Java Programming. Objectives. Introduce Software Engineering Concepts Introduction to Object Oriented and Java Programming Provide Context for Software in FRC Robotics Provide Foundation Interacting with Programming Team. Agenda. Introduction Philosophy Object Oriented Java Syntax

elma
Download Presentation

Java Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Programming

  2. Objectives Introduce Software Engineering Concepts Introduction to Object Oriented and Java Programming Provide Context for Software in FRC Robotics Provide Foundation Interacting with Programming Team

  3. Agenda • Introduction • Philosophy • Object Oriented • Java Syntax • FRC Robotics • Libraries • Tele-operated • Autonomous

  4. Introduction • Mr. Rich Vitkus • BS Computer Science at Rensselaer Polytechnic Institute • Manager of Enterprise Architect, Lowe’s Home Improvement • 3 years FLL, 4th year FTC, 6th year FRC • Evan Vitkus • VP Programming • 2years FLL, 2nd year FTC, 2nd year FRC

  5. Philosophy Computers do what you tell them to do, not what you want them to do. Different results mean either the software, the system, or the data has changed Reuse ideas, libraries, and code. Test and debug systematically with as much information as possible. Programming is not art it is engineering. The standards and process are essential to success.

  6. Object Oriented • Consider an airport system in the real world. It consists of many different parts which work together to get work done • Control tower, airplane, runways, fuel trucks, security agent, … • When we build a software systems, some of the software objects have corresponding names • Class ControlTower, class Airplane, class Runway, … • Reduces “representation gap” between software model and solution we are building • Improves comprehension, communication, and predictability

  7. Object Oriented – Real World Object • Consider an airplane in the airport system. What is important? • Real world objects have information • Airplanes have a model number, serial number, speed, altitude • Real world objects also do things • Airplanes can land, take off, change speed, turn, …

  8. Object Oriented – Software Object • Have names corresponding to the real world system • Class Airplane • Store information – attributes • modelNumber, serialNumber, speed, altitude • Perform actions – methods • land(), takeOff(), changeSpeed(), turn()

  9. Object Oriented – Software Object • An object bundles data (attributes) and code to perform actions (methods) into one, cohesive unit //Java source code class airplane { private int speed; private int model; public void land() { … } public void takeOff() { … } Airplane speed model land() takeOff()

  10. Object Oriented – Project • Simple dice game • Each player rolls two dice ten times • The player rolling seven or more the most times is the winner

  11. Object Oriented – Project • Identify the real world objects in the game • Game • Player • Die

  12. Object Oriented – Project • Identify the attributes of each object in the game • Game • dice • players • Player • name • score • Die • value

  13. Object Oriented – Project • Identify the methods of each object in the game • Game • play • Player • takeTurn • incrementScore • getScore • Die • roll

  14. Object Oriented – Class and Instance An object bundles data (attributes) and code to perform actions (methods) into one, cohesive unit Die value die1:Die value=3 roll() • Class • Definer: A blueprint that stores the definition for instances • Creator: A factory for creating software objects of one kind • Instance • Instantiated (created) by a class • Occupies space in computer memory • Retains values of attributes • Has behavior

  15. Java Syntax - Attributes • Java is strongly typed • Two basic types in Java • Primitive – int, double, boolean, char, etc • private int value; • Object – created from classes • private Die die1; • Variables– attributes which can change values • Constants – attributes which do not change values • private final int SIDES = 6;

  16. Java Syntax - Methods • Methods can perform actions, have parameters, and return values Public void setName(String playerName) { name = playerName; } public int roll() { value = (int)(Math.random()*SIDES) + 1; return value; }

  17. Java Syntax – Control Structures - Conditional • If statements handle boolean (true or false) conditions if (i == 3) doSomething(); if (i == 2) doSomething(); else doSomethingElse(); if (i == 3) { doSomething(); } elseif (i == 2) { doSomethingElse(); } else { doSomethingDifferent(); }

  18. Java Syntax – Control Structures - loops • Loops repeat a segment of code // validate a boolean condition then execute while (i < 10) { doSomething(); } // execute then validate a boolean condition (always // run at least once do { doSomething(); } while (i < 10); // execute a specific number of times for (int i = 0; i < 10; i++) { doSomething(); }

  19. Java Syntax – Project public class Game { private Player player1; private Player player2; private Die die1; private Die die2; private int score; public void play() { for (int i = 0; i < 10; i++) { score = die1.roll() + die2.roll(); if (score > 7) { player1.incrementScore(); } } for (int i = 0; i < 10; i++) { score = die1.roll() + die2.roll(); if (score > 7) { player2.incrementScore(); } } if (player1.getScore() > player2.getScore()) { System.out.print("Player 1 wins"); } else { System.out.print("Player 2 wins"); } } }

  20. Agenda • Introduction • Philosophy • Object Oriented • Java Syntax • FRC Robotics • Robot • Libraries • Tele-operated • Autonomous

  21. FRC Robotics – Object Oriented • Software Objects correspond to Real World Objects • Reduces “representation gap” between software model and solution we are building • Improves comprehension, communication, and predictability • An object bundles data (attributes) and code to perform actions (methods) into one, cohesive unit

  22. FRC Robotics Input Process Output

  23. Lunacy http://robotics.nasa.gov/first/2009kickoff/LunacyFull.wmv

  24. Robot – Photo 1

  25. Robot – Photo 2

  26. Robot – Photo 3

  27. FRC Robotics - Libraries • FRC Javadoc • http://wbrobotics.com/javadoc/index.html • import edu.wpi.first.wpilibj.Joystick; • import edu.wpi.first.wpilibj.RobotDrive; • import edu.wpi.first.wpilibj.Victor; • import edu.wpi.first.wpilibj.Servo; • import edu.wpi.first.wpilibj.Jaguar; • import edu.wpi.first.wpilibj.Compressor; • import edu.wpi.first.wpilibj.camera.AxisCamera; • Getting Started with Java for FRC • http://www.youtube.com/user/thenewboston

  28. FRC Robotics – Teleoperated • Human Players control the robot • Software controls the robot • Event Loop • Input • JoySticks • Sensors • Timer • Camera • Process • Calculations • Output • Speed controllers • Solenoid

  29. FRC Robotics – Teleoperated • Human Driver and Human Robot • Eyes open • Eyes closed

  30. FRC Robotics – Teleoperated Pseudo Code

  31. FRC Robotics – Autonomous • No Human Players • Software controls the robot • Input • Sensors • Timer • Camera • Process • Calculations • Output • Speed controllers • Solenoid

  32. FRC Robotics – Autonomous • Human Robot • Vision • Touch • Time

  33. FRC Robotics – Autonomous Pseudo Code

  34. FRC Robotics – Questions

  35. FRC Robotics – Appendix Slides removed to reduce to 75 minutes

  36. Java Syntax - Methods • Setters and Getters • Setters are a public method to set the value of private attributes • Getters are a public method to get the value of private attributes Player Public void setName(String playerName) Public String getName() Public void setScore(intplayerScore) Public intgetScore()

  37. Object Oriented – Concepts • Cohesion – strongly related responsibilities of a software component • Encapsulation – hide information or details • Attributes are private (only exposed to the class) • Methods are public (exposed to the world) • Polymorphism – multiple methods with the same name which operate on different data • print(file) • print(integer) • Inheritance – a generalization, specialization hierarchy. Extend or override functionality and data from a parent (super) class • boy is a human is a mammal

  38. Object Oriented – Project Game Plays Has Player Die Rolls

  39. Dice Game Code - Die public class Die { private final int SIDES = 6; int value; public intgetValue() { return value; } public int roll() { value = (int)(Math.random()*SIDES) + 1; return value; } }

  40. Dice Game Code - Player public class Player { private String name; private int score = 0; public void setName(String playerName) { name = playerName; } public String getName() { return name; } public intgetScore() { return score; } public void takeTurn(Die die1, Die die2) { int roll; score = 0; for (int i = 0; i < 10; i++) { roll = die1.roll() + die2.roll(); if (roll > 7) { incrementScore(); } } } public void incrementScore() { score += 1; } }

  41. Dice Game Code - Game public class Game { private static Player player1 = new Player(); private static Player player2 = new Player(); private static Die die1 = new Die(); private static Die die2 = new Die(); public static void play() { player1.takeTurn(die1, die2); player2.takeTurn(die1, die2); if (player1.getScore() > player2.getScore()) { System.out.print("Player 1 wins " + player1.getScore() + " to " + player2.getScore()); } else if (player1.getScore() < player2.getScore()){ System.out.print("Player 2 wins " + player2.getScore() + " to " + player1.getScore()); } else { System.out.print("It's a tie " + player2.getScore() + " to " + player1.getScore()); } } }

  42. Java Syntax – Control Structures - Conditional • Switch statements handle multiple cases switch (ch) { case 'A': doSomething(); // Triggered if ch == 'A' break; case 'B': case 'C': doSomethingElse(); // Triggered if ch == 'B' or ch == 'C' break; default: doSomethingDifferent(); // Triggered in any other case break; }

  43. Java Syntax – Arrays • Arrays are an ordered collection • A dozen eggs • The passengers on an airplane // one dimensional array int[] numbers = newint[5]; numbers[0] = 2; numbers[1] = 5; int x = numbers[0]; // multi dimensional array int[][] numbers = newint[3][3]; number[1][2] = 2;

More Related