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
Graphical User Interface Programming Dr. Susan McKeever (not me) Email: [email protected] www.comp.dit.e/rlawlor UI Programming • At the end of the course you will be able to: – Develop GUI applications – Use standard UI components – Develop custom UI components – And… Program in Java – And.. Be a better programmer Admin… • Assessment: – 1 formal exam = 50% – 1 assignment + in class test = 35% – Lab marks = 15% Admin • Contact Hours: – 1 hour lecture – 2 hour lab session – 1 hour tutorial Admin • Tutorial/Lecture/Lab – Lecture • Provide new material • Usually new Lab exercises – Lab • Work on latest Lab Sheet • Lab content will be a week behind the lecture.. – Tutorial • Discuss issues from last Lab Sheet • Review Broken Code/error messages Course.. • Topics – Java Language Basics • Hello World • Operators/Reference Types • OO Basics • Packages • Abstractions • Exceptions • Connecting to Databases JDBC • “Good” programming practices – GUIs (Java Swing) • • • • • • Layout Managers Event Handing Graphics Applets GUI Design Class structures and Model View Controller (MVC) Resources… • Resources – Web, web, web, web, web, web,……………… – JAVA API http://download.oracle.com/javase/6/docs/api/ – Textbook: UI Programming: Paul Fischer, An Intro to GUIs with Java Swing General Reference: Java in a Nutshell, O’Reilly Java Swing, O’Reilly 2nd Ed. • Webcourses – www.comp.dit.ie/smckeever – – – – – – CHECK YOU CAN ACCESS.. IF NOT EMAIL ME Lecture notes Lab Assignments & eventually Solutions Assignments (Details and Submission) Links to Useful References Past Exam Papers.. Just 1 set.. Important • Lecture notes are my guide to structuring lectures • They do not contain all material covered • Will do plenty of work/examples etc on the board Introduction to Java Programming Java Editions Java 2 Platform Java2 Standard Edition (J2SE™) Standard desktop & workstation applications; applets Java2 Enterprise Edition (J2EE™) Java2 Micro Edition (J2ME™) Heavy duty server Small & memory Systems – medium constrained devices to large companies Key Benefits of Java • Java is “write once, run anywhere” – architecture neutral – portable across different platforms – Due to Java Virtual Machine (JVM) • Security features – highly configurable security levels prevent any piece of Java code doing harm to the host system Key Benefits of Java • Network-centric platform – easy to work with resources across a network and to create network based applications • Object Oriented – an interacting collection of independent software components – dynamic extensible programs Key Benefits of Java • Internationalisation – uses 16 bit Unicode characters that represents the phonetic and ideographic character sets of the entire world • Performance – although an interpreted language Java programs run almost as fast as native C, C++ programs • Simple and easy to develop – powerful & well designed set of APIs – http://download.oracle.com/javase/6/docs/a pi/ JVM class myCode { … … … … } Compiled by Java compiler 1001100101001 … … myCode.class Interpreted by JVM Bytecode myCode.java Source Code Application runs JVM • JVM provides the run time environment for the bytecode (Java Runtime Environment JRE) – executes the bytecode and causes native machine code instructions to execute on the CPU that the JVM is on each target platform needs an implementation of the JVM The Simplest Java Program public class HelloWorld{ // no fields // main method public static void main (String [] args){ System.out.println("Hello World.."); } } Basic Program structure • Basic class definition - remember from OO programming last year? class className { // field declarations … // method declarations … } Class versus Object? The Simplest Java Program public class HelloWorld{ // no fields // main method public static void main (String [] args){ System.out.println("Hello World.."); } } To run a java program, you need a special methods called the main method to tell the program where to start executing accessible to all classes (info hiding) Simple Java Program public class HelloWorld{ // no fields indicates class method returns nothing command line args // main method public static void main (String [] args){ invoking a member System.out.println("Hello World.."); } } Not much point in creating an object out of this class.. It doesn’t describe anything.. It just “runs” Objects • An object includes state (fields) and behaviour (methods) • A class object is the blueprint for the instance objects • All code must be included in a class – no inline functions like C++ An Example Class • Want to create a class that represents a student. • Want to store a “name” for the student. • How? • Want to the class to have a way to print out the student name • How? An Example Class public class Student { // member fields private String name; // constructor public Student(String name) { this.name=name; } // methods public void printDetails(){ System.out.println("\nName: “ + name); } } An Example Class a business class public class predefined Student { accessibility Java class // member fields no return private String name; type reference to // constructor the object itself name) { public Student(String this.name=name; } // methods public void printDetails(){ String concatenation System.out.println("\nName: “ + name); } } Instantiation (i.e. creating objects out of a class) • Class definition used to create a “class object” at runtime • E.g. created a Student class.. Now want to create a “real” student object • To instantiate “instance objects” use new operator ClassName myInstance = new ClassName(); where ClassName() is a constructor Note: no need to allocate the memory for the object like in C++ Using a Class in a Program the program control class: Contains “main” source file called myProg.java public class myProg { public static void main(String args []){ // instantiate a Student object Student student1= new Student("Joe Bloggs"); Student student2= new Student(“Liz mckeever"); // invoke printDetails method student1.printDetails(); student2.printDetails(); } } Using the JDK • Each class is stored in a source file “xxx.java” • The name of source file should be the same as the name of class public class myCode { … … … … } myCode.java Source File Compiling your source code • Compile each class source file into bytecode (class files) • In DOS To compile a java source file 1001101001110101011 … … … … javac myCode.java • This creates a classfile called myCode.class myCode.class Class File BUT.. This year we’re going to use Eclipse Eclipse An Integrated Development Environment (IDE) Originally created by IBM (2001) Open source community, free Widely widely used in industry Increases coding efficiency Spots compile errors as you type Allows quick fixes Helps file organisations/packages Imports are easy Demo.. Eclipse • Free to download • Worth doing.. • http://www.eclipse.org/ To run your program • All so easy in Eclipse.. – Click the “RUN” command in Eclipse – full instructions at the lab Using a Control Class // This is in a file call myControlClass.java public class myControlClass { public static void main(String args []){ // instantiate a Student object new StudentPrinter(); } } Using a Control Class // This is in a file call StudentPrinter.java public class StudentPrinter { // Constructor - instantiate a Student object public StudentPrinter() { Student student1= new Student("Joe Bloggs"); Student student2= new Student(“Liz mckeeve"); // invoke printDetails method student1.printDetails(); student2.printDetails(); } } Using a Control Class // This is in a file call Student.java public class Student { // member fields private String name; // constructor public Student(String name) { this.name=name; } // methods public void printDetails(){ System.out.println("\nName: " + name); } } General points to note.. • 80% of the cost of software is on maintaining code – Typically not the original developer • “You cannot be good at s/w development if you don’t make it as easy as possible for someone else to maintain your code” • Dr. Susan McKeever Sept 2012 How? • ?? Common sense • Comment your code – Header at the top of your code – Every method explained • Use meaningful names for variables, classes, objects... • Use java conventions (see overleaf) • Many more.. To be covered. Use Conventions.. • Java is Case sensitive • Use the conventions – Classes should be nouns, capitalised first letter e.g. Student, ImagePixel – Variables mixed case starting with lower. E.g. acctBalance, line – Constant are all upper case e.g. COLOR_RED – Methods are verbs, mixed case starting with lower e.g. getBalance() Java Syntax part 1 Java Syntax Primitive data types Operators Control statements Primitive data types • Using a variable in java.. You must declare what type of data can contain.. – int, char etc.. • A primitive type is predefined by the language and is named by a reserved keyword.... 8 of them in java Primitive data types • char (16 bits) a Unicode character • byte (8 bits) • int (32 bits) a signed integer • short (16 bits) a short integer • long (64 bits) a long integer Primitive data types • float (32 bits) a real number • double (64 bits) a large real number • boolean (8 bits) – values are true or false (keywords) – Used with control statements e.g. while, do , if – e.g. while (fileEmpty) Operators • Additive + • Multiplicative * / % • Equality (tests) == != • Assignment operators = += -= *= /= %= Operators • Relational operators < <= > >= • Increment operators (postfix and prefix) ++ -• Conditional operator (short cut for if/else ?: e.g. max = (a > b) ? a : b; • String concatenation + Logical Operators • Not ! • Logical AND && • Logical OR || Control Statements • Similar to C/C++ syntax: – if statement if (x != n){ … } else if { … } else { … } – for statement for (int i=0; i<max; i++){ … }; Control Statements – while statement while (x==n ){ … }; – do statement do { … } while( x<=y && x!=0); Control Statements – switch statement switch (n){ case 1: … break; case 2: case 3: … break; default: break; }; Java Syntax Part 2 Java Reference Types Classes Arrays Reference Types • Classes and arrays are composite types – no standard size – contain other elements • Manipulated “by reference’’ to the object or array • Primitive data types manipulated “by value” Reference vs Primitive Types • A reference is a value that refers to the object or array • A primitive datatype holds the value directly • Difference to primitive types effects the way values are copied and compared Setting Object A = Object B only sets the reference and does not set the contents Comparing Object A and Object B, A will not be equal to B even if they have the same contents References in Java • Note: – Java does not support the & address-of or -> and * de-reference operators of C and C++ – the . operator in Java is more like the -> operator of C++ – references in Java cannot be manipulated (e.g. incremented or decremented) null • null – is a special value indicating a reference to nothing – can be assigned to a variable of any reference type Arrays in Java • Array declaration – set the (1) size or (2) the values: (1)type arrayId[] = new type[limit]; (2)type arrayId[] = new type[] {values}; • Multi dimensional array: type arrayId[][] =new type[rowlimit][colLimit] • Examples: int frequencies[]= new int[]{20,40,60}; String countryCode[]= new String[176]; double table[]=new double[4][5]; Arrays in Java • Arrays can be formed from any data type or class • Arrays are indexed from 0. • Arrays are fixed size but the size can be allocated at run time: e.g. int array1[]; // declare array … … int size=n; // get array size, array1 = new int [size]; // allocate array • Assigning one array to another array copies the reference and does not copy full array. Arrays in Java • Accessing an array element that does not exist will result in an error • The length of an array can be accessed using a read-only property called length that is associated with every array. e.g. for (i=0; i<frequencies.length; i++)… • Arrays can be passed as parameters to methods e.g. main (String [] args) Class & Array Interaction • There are 3 ways that classes and arrays are used together (1) An array of a class of objects: Student students[] =new Student[8]; (2) A class containing an array and methods that act on it (3) A class containing methods that operate on array parameters Class & Array Interaction (2) A class containing an array and methods that act on it class IntArray { private int arrayOfInt[]; IntArray(int size){ //constructor arrayOfInt=new int [size]; } int get(int index){ // get value at index return arrayOfInt[index]; } void set (int index, int value){ arrayOfInt[index]=value; } //set value public String toString(){ // print out array String s =””; for (int i=0; i<arrayOfInt.length;i++) s += “ “+arrayOfInt[i]; return s; } } Class & Array Interaction (3) A class containing methods that operate on array parameters class ArrayUtilities { static int max( int arrayA [] ) { // finds the max element of arrayA // and returns it Array passed into ... to the “sort” return arrayA[i]; method as a parameter } static void sort (int [] arrayA) { //sorts the elements of arrayA ... } }