Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Class (computer programming) wikipedia , lookup
Java (programming language) wikipedia , lookup
Software quality wikipedia , lookup
Design Patterns wikipedia , lookup
Application Interface Specification wikipedia , lookup
Java performance wikipedia , lookup
Java ConcurrentMap wikipedia , lookup
Object lifetime wikipedia , lookup
C Sharp syntax wikipedia , lookup
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 FRC Robotics Libraries Tele-operated Autonomous 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 2 years FLL, 2nd year FTC, 2nd year FRC 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. 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 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, … 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() Object Oriented – Software Object An object bundles data (attributes) and code to perform actions (methods) into one, cohesive unit Airplane speed model land() takeOff() //Java source code class airplane { private int speed; private int model; public void land() { … } public void takeOff() { … } 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 Object Oriented – Project Identify the real world objects in the game Game Player Die Object Oriented – Project Identify the attributes of each object in the game Game dice players Player name score Die value Object Oriented – Project Identify the methods of each object in the game Game play Player takeTurn incrementScore getScore Die roll Object Oriented – Class and Instance An object bundles data (attributes) and code to perform actions (methods) into one, cohesive unit Class Definer: A blueprint that stores the definition for instances Creator: A factory for creating software objects of one kind Die value roll() Instance Instantiated (created) by a class Occupies space in computer memory Retains values of attributes Has behavior die1:Die value=3 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; 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; } 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(); } else if (i == 2) { doSomethingElse(); } else { doSomethingDifferent(); } 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(); } Java Syntax – Project public class Game { private private private private private Player player1; Player player2; Die die1; Die die2; 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"); } } } Agenda Introduction Philosophy Object Oriented Java Syntax FRC Robotics Robot Libraries Tele-operated Autonomous 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 FRC Robotics Input Process Output Lunacy http://robotics.nasa.gov/first/2009kickoff/LunacyF ull.wmv Robot – Photo 1 Robot – Photo 2 Robot – Photo 3 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 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 FRC Robotics – Teleoperated Human Driver and Human Robot Eyes open Eyes closed FRC Robotics – Teleoperated Pseudo Code FRC Robotics – Autonomous No Human Players Software controls the robot Input Sensors Timer Camera Process Calculations Output Speed controllers Solenoid FRC Robotics – Autonomous Human Robot Vision Touch Time FRC Robotics – Autonomous Pseudo Code FRC Robotics – Questions FRC Robotics – Appendix Slides removed to reduce to 75 minutes 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 Public Public Public void setName(String playerName) String getName() void setScore(int playerScore) int getScore() 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 Object Oriented – Project Plays Player Game Rolls Has Die Dice Game Code - Die public class Die { private final int SIDES = 6; int value; public int getValue() { return value; } public int roll() { value = (int)(Math.random()*SIDES) + 1; return value; } } Dice Game Code - Player public class Player { private String name; private int score = 0; public void takeTurn(Die die1, Die die2) { int roll; score = 0; public void setName(String playerName) { name = playerName; } for (int i = 0; i < 10; i++) { roll = die1.roll() + die2.roll(); if (roll > 7) { incrementScore(); } public String getName() { return name; } } public int getScore() { return score; } public void incrementScore() { score += 1; } } } Dice Game Code - Game public class Game { private private private private static static static static Player player1 Player player2 Die die1 = new Die die2 = new = new Player(); = new Player(); Die(); 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()); } } } 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; } Java Syntax – Arrays Arrays are an ordered collection A dozen eggs The passengers on an airplane // one dimensional array int[] numbers = new int[5]; numbers[0] = 2; numbers[1] = 5; int x = numbers[0]; // multi dimensional array int[][] numbers = new int[3][3]; number[1][2] = 2;