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
Java Programming Basics SE-1010 Dr. Mark L. Hornick 1 A Java program is composed of one or more classes One of the classes in the program must be designated as the main class class Basic Jav a Program MyMainClass + main(String[]) : void It must have a main() method It can have (but doesn’t have to) other methods as well When the main() method is called, the instructions within the method begin to execute in sequence The program terminates (quits, exits, closes) when the main() method finishes executing SE-1010 Dr. Mark L. Hornick 2 A program template for simple Java applications SE-1010 Dr. Mark L. Hornick 3 main() method components package somePackageName; // defines the package for this class import javax.swing.*; // allows classes in package to be used public class MyMainClass{ public static void main( String[ ] args ) { // This is the main() method’s BODY. // Other Java instructions go here… int x; // Here we declare a variable named x of type int x = 2; int y = x + x; } } Note: The main() method is a static method. Static methods can be called directly on a class – a class instance (that is, an object) does not have to exist. SE-1010 Dr. Mark L. Hornick 4 Programs contain comments which state the purpose of the program, explain the meaning of code, and provide other descriptions to help programmers use and understand the code. 1. 2. 3. Comments are not executed A comment is any sequence of text that begins with the marker /* and ends with the marker */. A comment is also defined by the text that follows the // marker to the end of the current line. SE-1010 Dr. Mark L. Hornick 5 UML Review Class diagrams A UML Class Diagram represents one or more classes and their relationships to one another UML is not specific to Java, so a Class Diagram really represents the generic concept of a class without regard to what language implements the actual class The name of the class always appears at the top of a Class Diagram rectangle MyMainClass public class MyMainClass { } SE-2030 Dr. Mark L. Hornick 6 Class diagrams Operations A Class Diagram can show class methods or operations Syntax: [visibility] <name>([ [in|out] param:type]*] [:<return_type>] MyMainClass public class MyMainClass { public static void main( String[] args) { … } ????? } What goes here? SE-2030 Dr. Mark L. Hornick 7 Class diagrams Operations A Class Diagram can show class methods or operations Syntax: [visibility] <name>([ [in|out] param:type]*] [:<return_type>] The method is underlined if it is static. MyMainClass public class MyMainClass { <attributes go here> + main( args: String[]): void public static void main( String[] args) { … } } A Class diagram does not show much detail – it just shows the class’s methods (and attributes). It does not show individual instructions within a method. SE-2030 Dr. Mark L. Hornick 8 A UML Sequence diagram shows messages being sent to Objects Objects can send many messages between one another during the course of execution of a program A given S.D. shows just a sequence of messages for a specific circumstance The name of the object and its class type appears at the top of a Sequence Diagram rectangle Syntax 1: [<object_name> ]: <class_name> plotter: WinPlotter WinPlotter plotter; SE-2030 Dr. Mark L. Hornick 9 UML Sequence Diagrams Group Activity Draw the Sequence Diagram corresponding to the following code: public class MyApp { public static int main (String[] args) { Account myAcct = new Account(); myAcct.deposit(100.0); myAcct.deposit(50.0); float balance = getBalance(); } } SE-2030 Dr. Mark L. Hornick 10 Methods within a class are used to contain Java instructions that perform a specific function A way of grouping related Java instructions together A technique for organizing your program into a logical structure A way to keep methods from getting too long (doing too much) The words subroutine and function are alternate, older (deprecated) terms for method that were used in the days before Object-oriented programming. SE-1010 Dr. Mark L. Hornick 11 We already know a little about calling other class’s methods: WinPlotter plotter = new WinPlotter(); plotter.moveTo(100, 100); String string1 = “abcdefg”; String uppercaseStr1; uppercaseStr1 = string1.toUpper(); JOptionPane.showMessageDialog( null, string1, “hello”, 2); String, JOptionPane and WinPlotter are all class identifiers. plotter, string1 and uppercaseStr1 are all object identifiers. showMessageDialog is a static method, which means that you can and should call it via the class – you don’t need to create a JOptionPane object. The moveTo and toUpper methods are not static, so these methods have to be called through objects – instances of the class in which the methods are defined. Actual arguments are passed to a method within the parentheses of a method invocation. Literal values (like “hello”) or identifiers (like string1, that reference values) can be passed to a method within the parenthesis. A method may not take any arguments at all, like in toUpper(). If a method returns a value as a result of being called, that value can be SE-1010 “captured” by assigning it to an object identifier. Dr. Mark L. Hornick 12 This is the Java syntax for defining our own methods within our class: We need to give our method a name, which should be a verb or verb phrase, since a method implies an action. The first letter is lowercase. If our method expects actual arguments to be supplied when it is called, we have to specify each argument’s specific datatype. We also specify identifiers that the method will use locally (within the method) to represent the values supplied when the method is called. These identifiers are called the formal arguments. public class MyApplication { // main() method not shown because of space limitations public static boolean printWelcomeMessage(String title, String message) { // method’s instructions go here… JOptionPane.showMessageDialog( null, message, title, 2 ); return true; } } SE-1010 Dr. Mark L. Hornick 13 More syntax details for defining our own methods within our class Visibility modifier; “public” means that this method can actually be called from the “outside” – another class or object. “private” methods can’t be called from outside. “static” means that an instance of the class in which this method is defined does not have to exist; the method can be called directly on the class. If “static” is not present, the method must be called through an object. A method can return any datatype, such as int, float, String, WinPlotter, etc. “void” means that the method returns no value at all back to the caller. public class MyApplication { public static boolean printWelcomeMessage(String title, String message ) { } } // method instructions go here… JOptionPane.showMessageDialog( null, message, title, 2 ); return true; // always indicate “success” Don’t forget the SE-1010 matching braces! Dr. Mark L. Hornick 14 When you call a method that declares formal arguments, you pass actual arguments to the method that indicates what value the formal argument should have for that call. public static void main(String args[]) { // here we pass an String constant as an argument printWelcomeMessage( “Here is a message” , “Hello” ); String text = “SE1010" ; // here we pass a String variable printWelcomeMessage( text, “hi” ); } public static void printWelcomeMessage(String title, String message ) { // method instructions go here… JOptionPane.showMessageDialog( null, message, title, 2 ); } SE-1010 Dr. Mark L. Hornick 15 The datatype of the actual argument must be compatible with the datatype of the matching formal argument public static void main(String args[]) { // here we pass an String constant as an argument printWelcomeMessage( “Hello”, “class” ); String text = “SE1010" ; // here we pass a String variable printWelcomeMessage( text, “hi” ); If the formal argument specifies a String, then the actual argument must be a String! } public static void printWelcomeMessage(String title, String message ) { // method instructions go here… JOptionPane.showMessageDialog( null, message, title, 2 ); } SE-1010 Dr. Mark L. Hornick 16 When a method is called, the value of the actual argument is passed (copied) to the matching formal argument public static void main(String args[]) { // here we pass an String constant as an argument printWelcomeMessage( “Hello”, “there” ); String text = “SE1010" ; // here we pass a String variable printWelcomeMessage( text, “hi” ); The variable identifier text has the value “SE1010” and is passed as an argument } public static void printWelcomeMessage(String title, String message ) { // method instructions go here… JOptionPane.showMessageDialog( null, message… ); The parameter } identifier message receives the value This way of passing the value of “there” during the 1st arguments is called a pass-bycall and “hi” during the 2nd call value, or call-by-value, scheme. SE-1010 Dr. Mark L. Hornick 17 Quiz before Lab 2 What is a message argument? What is a return value? What method must exist in order for a program to be runnable? Name the datatypes that represent integer values Name the datatypes that represent real (or floating-point) values Explain why certain datatypes (like byte) cannot express numbers as large as others (like long) Give examples of the two types of Java comments SE-1010 Dr. Mark L. Hornick 18