Fundamentals of Software Development 1Slide 1 Review: Why start with WordGames? You wrote your first lines of code in this course in WordGames.You wrote your first lines of code in this course in WordGames. Why start with such a complex project?Why start with such a complex project? Answer:Answer: –It is practical to do so, by using an interface to connect your code to ours –It makes the point that most software engineers modify/extend existing programs rather than creating their own “from scratch” See next slides for details on these two points
Fundamentals of Software Development 1Slide 2 UML class diagram for WordGames CapitalizerNameDropperxxx … StringTransformable transform(String) : String All our stuff The StringTransformable interface is how our code knows how to “connect” to your code Questions on this important idea?
Fundamentals of Software Development 1Slide 3 “From scratch” projects Today’s software engineering is almost NEVER “from scratch”Today’s software engineering is almost NEVER “from scratch” –Compilers translate from high-level language to machine code –We use libraries for printing and (in Java) much more –We reuse existing code During a 20 year career, a typical software engineer might:During a 20 year career, a typical software engineer might: –Work on about 20 projects –Be involved with the creation of only 1 or 2 projects from scratch For all the other projects, she modifies/extends existing projectsFor all the other projects, she modifies/extends existing projects We’ll do a “from scratch” project today called HelloWorldWe’ll do a “from scratch” project today called HelloWorld –So that you can see what one is like –And so that you can see “under the hood” of some of the concepts that you have been studying
Fundamentals of Software Development 1Slide 4 HelloWorld concepts – outline The next slide shows the entire HelloWorld programThe next slide shows the entire HelloWorld program –It illustrates the following concepts: The main methodThe main method Static methodsStatic methods Console projectsConsole projects How to use System.out.println to print a String to the consoleHow to use System.out.println to print a String to the console –As before, the slide omits comments to focus on the code –You experienced the above concepts in your own HelloWorld, Part 1
Fundamentals of Software Development 1Slide 5 HelloWorld – the complete program public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world"); } main is the name of the special method at which any Java application begins A static method is a method that “belongs” to the class instead of to each instance of the class. The static method cannot refer to the class’ non-static fields. The special main method is, by definition, static. System is a class that has “system” stuff System has a public static field called out that is a PrintStream – a thing that can print to the console main has command-line arguments sent as a String array println is a PrintStream method that prints its argument on a line Questions on any of these ideas?
Fundamentals of Software Development 1Slide 6 HelloWorld extended concepts – outline We just saw the following concepts from HelloWorld:We just saw the following concepts from HelloWorld: –The main method –Static methods –Console projects –How to use System.out.println to print a String to the console Now we turn to these additional concepts from HelloWorld:Now we turn to these additional concepts from HelloWorld: –How to read from the console (i.e., get input from the human) –How and why to use “helper” methods We continue to omit comments in order to focus on the codeWe continue to omit comments in order to focus on the code
Fundamentals of Software Development 1Slide 7 HelloWorld – the complete program public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world"); } System is a class that has “system” stuff System has a public static field called out that is a PrintStream – a thing that can print to the console To read from the console: 1.Declare and construct a new Scanner object, sending it System.in 2.Use the Scanner object’s next method to read and return a String Related methods to read int, double, etc. Exercise: What do you think is the name of the public field in System that is an InputStream – a thing that can read from the console? Answer: in Exercise: Write the statements that would read a String from the console. Ask questions!!! The answer is on the next slide, but you maximize your learning by thinking and asking, not looking.
Fundamentals of Software Development 1Slide 8 import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { Scanner scanner; String input; scanner = new Scanner(System.in); System.out.print(“Enter a String: ”); input = scanner.next(); System.out.println(input.substring(3)); } To read from the console: When you use a library class (like Scanner), you usually need to import the class to tell Java where to find it. Declare a Scanner local variable Construct the Scanner, sending it System.in Prompt the human to type something next() waits for the user to type and returns the result. We could have done anything we want with the input – printing a substring of it is just an example.
Fundamentals of Software Development 1Slide 9 import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { Scanner scanner; String input; scanner = new Scanner(System.in); System.out.print(“Enter a String: ”); input = scanner.next(); System.out.println(input.substring(3)); } To read from the console: This is the same slide as the previous slide. Study this code now. ASK QUESTIONS!
Fundamentals of Software Development 1Slide 10 “Helper” methods Encapsulation: bundling things together to make them easier to deal withEncapsulation: bundling things together to make them easier to deal with Encapsulation in methods:Encapsulation in methods: –Bundle a chunk of code –Give it a name –Perhaps give it parameters “Helper” methods“Helper” methods –Private methods that you create to help the rest of your program –Valuable for the same reasons that encapsulating in methods is valuable in general Allows a chunk of code to be referenced via a well-chosen name Allows the code to be reused in a more general way (by sending different values as arguments)
Fundamentals of Software Development 1Slide 11 import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { ScannerExample.cubeRoot(12.0); for (int k = 100; k < 110; k = k + 1) { ScannerExample.cubeRoot((double) k); } ScannerExample.cubeRoot(); } private static void cubeRoot(double number) { System.out.println(“Cube root of ” + number + “ is ” + Math.pow(number, 1.0 / 3.0)); } private static void cubeRoot() { Scanner scanner = new Scanner(System.in); System.out.print(“Enter a number: ”); ScannerExample.cubeRoot(scanner.nextDouble()); } This slide illustrates: “helper” methods “for” loops Reading numbers from the console Methods that call other methods Study this code. ASK QUESTIONS! You will apply these ideas in HelloWorld, Part 2 (homework). The boxes are there to help your eyes – not part of the code If you wish, download and unzip ScannerExample ScannerExample
Fundamentals of Software Development 1Slide 12 HelloWorld extended concepts – summary We just saw the following concepts from HelloWorld:We just saw the following concepts from HelloWorld: –The main method –Static methods –Console projects –How to use System.out.println to print a String to the console –How to read from the console (i.e., get input from the human) –How and why to use “helper” methods Now do HelloWorld, Part 2 with your partnerNow do HelloWorld, Part 2 with your partnerHelloWorld, Part 2HelloWorld, Part 2