Java Methods Object-Oriented Programming and Data Structures 3rd AP edition Maria Litvin ● Gary Litvin Chapter 2 An Introduction to Software Engineering Copyright © 2015 by Maria Litvin, Gary Litvin, and Skylight Publishing. All rights reserved. Objectives: • Understand the software development process, tools, and priorities • Understand compilers and interpreters • Learn about Java Virtual Machine, bytecode • Learn to set up and run simple console applications, GUI applications, and applets in Java • Learn basic facts about OOP 2-2 Software Today: 2,540,000,000 2-3 Software Applications • Large business systems • • • • • • Databases Internet, e-mail, etc. Military Embedded systems Scientific research AI • Word processing and other small business and personal productivity tools • Graphics / arts / digital photography • Social networks • Games 2-4 Software Development 1950-1970's: • Emphasis on efficiency fast algorithms small program size limited memory use Now: • Emphasis on • Often cryptic code • Not user-friendly programmer’s productivity team development reusability of code easier maintenance portability • Better documented • User-friendly 2-5 Programming Languages C Assembly LISP Scheme languages Logo Ada Algol 1940 1950 1960 Fortran Machine code 1970 1980 Pascal C++ C# Java 1990 2000 Python Basic Cobol Smalltalk Smalltalk-80 D 2010 Swift 2015 Fortress Hack Groovy 2-6 Software Development Tools • Editor programmer writes source code • Compiler translates the source into object code (instructions specific to a particular CPU) • Linker converts one or several object modules into an executable program • Debugger steps through the program “in slow motion” and helps find logical mistakes (“bugs”) 2-7 The First “Bug” “(moth) in relay” Mark II Aiken Relay Calculator (Harvard University, 1945) 2-8 Compiled Languages: Edit-Compile-Link-Run Editor Editor Editor Source code Compiler Source code Compiler Source code Compiler Object code Object code Object code Linker Executable program 2-9 Interpreted Languages: Edit-Run Editor Source code Interpreter 2-10 Compiler vs. Interpreter • Compiler: • Interpreter: checks syntax generates machine-code instructions not needed to run the executable program the executable runs faster checks syntax executes appropriate instructions while interpreting the program statements must remain installed while the program is interpreted the interpreted program is slower 2-11 Java’s Hybrid Approach: Compiler + Interpreter • A Java compiler converts Java source code into instructions for the Java Virtual Machine. • These instructions, called bytecode, are the same for any computer / operating system. • A CPU-specific Java interpreter interprets bytecode on a particular computer. 2-12 Java’s Compiler + Interpreter Editor Compiler : : 7 K Hello.java Hello.class Interpreter Interpreter : Hello, World! 2-13 Why Bytecode? • Platform-independent • Loads from the Internet faster than source code • Interpreter is faster and smaller than it would be for Java source • Source code is not revealed to end users • Interpreter performs additional security checks, screens out malicious code 2-14 JDK — Java Development Kit • javac • javadoc Java compiler • java Java interpreter • appletviewer tests applets without a browser generates HTML documentation (“docs”) from source • jar packs classes into jar files (packages) All these are command-line tools, no GUI 2-15 JDK (cont’d) • Developed by Sun Microsystems (now Oracle); free download http://www.oracle.com/technetwork/java/javase/downloads/ • All documentation is online • Many additional Java resources on the Internet 2-16 Java IDE • GUI front end for JDK • Integrates editor, javac, java, appletviewer, debugger, other tools: specialized Java editor with syntax highlighting, autoindent, tab setting, etc. clicking on a compiler error message takes you to the offending source code line • Usually JDK is installed separately and an IDE is installed on top of it. 2-17 Types of Programs • Console • GUI applications applications • Applets 2-18 Console Applications • Simple text dialog: prompt input, prompt input ... result C:\javamethods\Ch02> path=%PATH%;C:\Program Files\Java\jdk 1.5.0_07\bin C:\javamethods\Ch02> javac Greetings2.java C:\javamethods\Ch02> java Greetings2 Enter your first name: Josephine Enter your last name: Jaworski Hello, Josephine Jaworski Press any key to continue... 2-19 Command-Line Arguments C:\javamethods\Ch02> javac Greetings.java C:\javamethods\Ch02> java Greetings Josephine Jaworski Hello, Josephine Jaworski public class Greetings { public static void main(String[ ] args) { String firstName = args[0]; String lastName = args[1]; System.out.println("Hello, " + firstName + " } } Command-line arguments are passed to main as an array of Strings. " + lastName); 2-20 Command-Line Args (cont’d) • Can be used in GUI applications, too • IDEs provide ways to set them (or prompt for them) Josephine Jaworski 2-21 Greetings2.java import java.util.Scanner; public class Greetings2 { public static void main(String[ ] args) { Scanner kboard = new Scanner(System.in); System.out.print("Enter your first name: "); String firstName = kboard.nextLine( ); Prompts System.out.print("Enter your last name: "); String lastName = kboard.nextLine( ); System.out.println("Hello, " + firstName + " " + lastName); System.out.println("Welcome to Java!"); kboard.close(); } } 2-22 GUI Applications Clickable panel Button Pull-down menu 2-23 HelloGui.java import java.awt.Color; ... GUI library classes public class HelloGui extends JFrame { < ... other code > public static void main(String[ ] args) { HelloGui window = new HelloGui( ); // Set this window's location and size: // upper-left corner at 300, 300; width 200, height 100 window.setBounds(300, 300, 200, 100); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setVisible(true); } } 2-24 OOP — Object-Oriented Programming • An OOP program models a world of active objects. • An object may have its own “memory,” which may contain other objects. • An object has a set of methods that can process messages of certain types. 2-25 OOP (cont’d) • A method can change the object’s state, send messages to other objects, and create new objects. • An object belongs to a particular class, and the functionality of each object is determined by its class. • A programmer creates an OOP application by defining classes. 2-26 The Main OOP Concepts: • Inheritance: a subclass extends a superclass; the objects of a subclass inherit features of the superclass and can redefine them or add new features. • Event-driven programs: the program simulates asynchronous handling of events; methods are called automatically in response to events. 2-27 Inheritance • A programmer can define hierarchies of classes • More general classes are closer to the top Person Child Baby Toddler Adult Teen 2-28 OOP Benefits • Facilitates team development • Easier to reuse software components and write reusable software • Easier GUI (Graphical User Interface) and multimedia programming 2-29 Review: • What are some of the current software development concerns? • What are editor, compiler, debugger used for? • How is a compiler different from an interpreter? • Name some of the benefits of Java’s compiler+interpreter approach. • Define IDE. 2-30 Review (cont’d): • • • • What is a console application? What are command-line arguments? What is a GUI application? What is the difference between a GUI application and an applet? • What is OOP? • Define inheritance. 2-31