2 The anatomy of class definitions

Slides:



Advertisements
Similar presentations
SOFTWARE AND PROGRAMMING 1 Lecture 3: Ticketing machine: Constructor, method, menu Instructor: Prof. Boris Mirkin web-site
Advertisements

JAVA Revision Lecture Electronic Voting System Marina De Vos.
Understanding class definitions Looking inside classes 5.0.
Looking inside classes Fields, Constructors & Methods Week 3.
Fields, Constructors, Methods
Written by: Dr. JJ Shepherd
Chapter 7: User-Defined Functions II
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 7: User-Defined Functions II.
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
Road Map Introduction to object oriented programming. Classes
Looking inside classes Choices Week 4. Class bodies contain fields, constructors and methods. Fields store values that determine an object’s state. Constructors.
Understanding class definitions Looking inside classes 3.0.
Terms and Rules Professor Evan Korth New York University (All rights reserved)
Understanding class definitions – Part II –. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Main.
1 Reflecting on the ticket machines Their behavior is inadequate in several ways: –No checks on the amounts entered. –No refunds. –No checks for a sensible.
Understanding class definitions Looking inside classes.
COP INTERMEDIATE JAVA Designing Classes. Class Template or blueprint for creating objects. Their definition includes the list of properties (fields)
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
Introduction to Java. 2 Textbook David J. Barnes & Michael Kölling Objects First with Java A Practical Introduction using BlueJ Fourth edition, Pearson.
Classes CS 21a: Introduction to Computing I First Semester,
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
SOFTWARE AND PROGRAMMING 1 In-class open-book TEST1 on 6/02 Lab SH131: Ms Mihaela Cocea (from ) Room London Knowledge Lab Emerald.
1 CSC 222: Object-Oriented Programming Spring 2013 Understanding class definitions  class structure  fields, constructors, methods  parameters  assignment.
Copyright © 2012 Pearson Education, Inc. Chapter 4 Writing Classes Java Software Solutions Foundations of Program Design Seventh Edition John Lewis William.
1 CSC 221: Computer Programming I Fall 2004 Understanding class definitions  class structure  fields, constructors, methods  parameters  assignment.
Understanding class definitions
1 COS 260 DAY 3 Tony Gauvin. 2 Agenda Questions? 1 st Mini quiz on chap1 terms and concepts –Today In BlackBoard –30 min., M/C and short answer, open.
COP INTERMEDIATE JAVA Designing Classes. Class Template or blueprint for creating objects. Their definition includes the list of properties (fields)
1 Opbygning af en Java klasse Abstraktion og modularisering Object interaktion Introduktion til Eclipse Java kursus dag 2.
Copyright by Scott GrissomCh 2 Class Definition Slide 1 Class Structure public class BankAccount{ fields constructor(s) methods } Sample Code Ticket Machine.
OOP with Java, David J. Barnes/Eric Jul Defining Classes1 Object State and Complexity Objects maintain a state. State is represented by a set of attributes.
Looking inside classes Conditional Statements Week 4.
Written by: Dr. JJ Shepherd
Object Oriented Programming and Data Abstraction Rowan University Earl Huff.
OOP Basics Classes & Methods (c) IDMS/SQL News
Lecture 3: More on Classes Textbook: Chapter 2 Recap: –Classes vs. Objects –Q: What comes first a class or an object? –Q: Do we need a class to create.
Object-Oriented Programming in Java. 2 CS2336: Object-Oriented Programming in Java Buzzwords interfacejavadoc encapsulation coupling cohesion polymorphic.
Understanding class definitions Exploring source code 6.0.
Comp1004: Building Better Objects II Encapsulation and Constructors.
SOFTWARE AND PROGRAMMING 1 Advert : NO TEST1 on 7/02: TEST1 will be 14/02 Lab: SH131, BBK536 6:00-7:30 (from ) [each student must have obtained.
ENCAPSULATION. WHY ENCAPSULATE? So far, the objects we have designed have all of their methods and variables visible to any part of the program that has.
SOFTWARE AND PROGRAMMING 1
9 Improving structure with inheritance
CSC 222: Object-Oriented Programming Fall 2015
Class definitions CITS1001 week 2.
Objects as a programming concept
Classes (Part 1) Lecture 3
Java Programming: Guided Learning with Early Objects
Yanal Alahmad Java Workshop Yanal Alahmad
Java Primer 1: Types, Classes and Operators
User-Defined Functions
Understanding class definitions
public class BankAccount{
Java Programming with BlueJ
Understanding class definitions
Chapter 3 Introduction to Classes, Objects Methods and Strings
Chapter 3 Introduction to Classes, Objects Methods and Strings
Encapsulation and Constructors
Classes, Encapsulation, Methods and Constructors (Continued)
COS 260 DAY 3 Tony Gauvin.
CHAPTER 6 GENERAL-PURPOSE METHODS
Understanding class definitions
F II 3. Classes and Objects Objectives
COS 260 DAY 4 Tony Gauvin.
JAVA CLASSES.
Defining Classes and Methods
Classes CS 21a: Introduction to Computing I
CS 1054: Lecture 2, Chapter 1 Objects and Classes.
Coming up Variables Quick look at scope Primitives Objects
Presentation transcript:

2 The anatomy of class definitions Objektorienterad programmering d2 2 The anatomy of class definitions DAT050, 18/19, lp 1

Main concepts to be covered fields constructors methods parameters assignment statements Fields – instansvariabler, dataattribut Constructors – initiering – varför? Ungefär som i C: parameters assignment statements Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Ticket machines – an external view Exploring the behavior of a typical ticket machine. Use the naive-ticket-machine project. Machines supply tickets of a fixed price. How is that price determined? How is ‘money’ entered into a machine? How does a machine keep track of the money that is entered? DEMO – nästa bild Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Ticket machines Demo Kör Naive Ticket Machine Black Box testing vs White box Sätt pris = 100 Inspect Sätt in 300 Skriv ut en biljett Den snor pengarna! Kolla koden Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Ticket machines – an internal view Interacting with an object gives us clues about its behavior. Looking inside allows us to determine how that behavior is provided or implemented. All Java classes have a similar-looking internal view. White box Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Basic class structure public class TicketMachine { Inner part omitted. The outer wrapper of TicketMachine public class TicketMachine { Inner part omitted. } public class ClassName { Fields Constructors Methods } The inner contents of a class TAVLAN Publika klasser läggs i filer med samma namn + .java En klass definierar en datatyp. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Objektorienterad programmering d2 Keywords Words with a special meaning in the language: public class private int Also known as reserved words. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Fields Fields store values for an object. They are also known as instance variables. Fields define the state of an object. Use Inspect to view the state. Some values change often. Some change rarely (or not at all). public class TicketMachine { private int price; private int balance; private int total;   Further details omitted. } type visibility modifier variable name TAVLAN forts. Klasser har två typer av medlemmar: Dataattribut (instansvariabler, datamedlemmar, eng. field) lagrar värden. Varje instans av klassen (objekt) har sin egen uppsättning av attributen som beskrivs i klassdefinitionen. Metoder (funktioner) verkar på instanser av klassen. private int price; Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Constructors Initialize an object. Have the same name as their class. public TicketMachine(int cost) { price = cost; balance = 0; total = 0; } Initialize an object. Have the same name as their class. Close association with the fields. Store initial values into the fields. External parameter values for this. Alla nya objekt initieras … jfr C Utebliven initiering mkt vanlig felorsak Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Passing data via parameters TAVLAN TicketMachine tm = new TicketMachine(500); Tm.insertMoney(2000); Tm.printTicket(); If ( tm.getPrice() > tm.getBalance() ) tm.refundMoney(); Parameters are another sort of variable. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Assignment Values are stored into fields (and other variables) via assignment statements: variable = expression; price = cost; A variable stores a single value, so any previous value is lost. som i C … += ++ etc Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Choosing variable names Objektorienterad programmering d2 Choosing variable names There is a lot of freedom over choice of names. Use it wisely! Choose expressive names to make code easier to understand: price, amount, name, age, etc. Avoid single-letter or cryptic names: w, t5, xyz123 Variabler, metoder namnNamnNamn Ok med I,j,k,… för loopräknare o.likn. amount (of what?) inte ‘elements’, utan ‘noOfElements’ Klasser NamnNamnNamn Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

More concepts methods conditional statements string concatenation including accessor and mutator methods conditional statements string concatenation local variables Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Methods Methods implement the behavior of objects. Methods have a consistent structure comprised of a header and a body. Accessor methods provide information about an object. Mutator methods alter the state of an object. Other sorts of methods accomplish a variety of tasks. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Objektorienterad programmering d2 Method structure The header provides the method’s signature: public int getPrice() The header tells us: the name of the method what parameters it takes whether it returns a result its visibility to objects of other classes The body encloses the method’s statements. plus ytterligare information som gås igenom senare Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Accessor (get) methods return type visibility modifier method name parameter list (empty) public int getPrice() { return price; } return statement start and end of method body (block) Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Objektorienterad programmering d2 Accessor methods An accessor method always has a return type that is not void. An accessor method returns a value (result) of the type given in the header. The method will contain a return statement to return the value. NB: Returning is not printing! Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Test What is wrong here? (there are five errors!) public class CokeMachine { private price; public CokeMachine() price = 300 } public int getPrice return Price; int What is wrong here? ; () ^ p (there are five errors!) } Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Mutator methods Have a similar method structure: header and body. Used to mutate (i.e., change) an object’s state. Achieved through changing the value of one or more fields. Typically contain assignment statements. Often receive parameters. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Mutator methods public void insertMoney(int amount) { visibility modifier return type method name parameter public void insertMoney(int amount) { balance = balance + amount; } field being mutated assignment statement Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Objektorienterad programmering d2 set mutator methods Fields often have dedicated set mutator methods. These have a simple, distinctive form: void return type method name related to the field name single parameter, with the same type as the type of the field a single assignment statement Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Objektorienterad programmering d2 A typical set method public void setDiscount(int amount) { discount = amount; } We can infer that discount is a field of type int, i.e: private int discount; Vilka set/get skall man ha? class Product { private String id; // konstant private String descr; // konstant private String price; // kan ändras public Item(...) { ... } public String getId() { ... } public String getDescr() { ... } public String getPrice() { ... } public void setPrice(int newPrice) {...} } Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Objektorienterad programmering d2 Protective mutators A set method does not have to assign the parameter to the field. The parameter may be checked for validity and rejected if inappropriate. Mutators thereby protect fields. Mutators support encapsulation. Enkelriktning Jfr C som saknar inkapsling: struct TicketMachine { int price; … } TicketMachine tm; tm.price = -400; Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Printing from methods public void printTicket() { // Simulate the printing of a ticket. System.out.println("##################"); System.out.println("# The BlueJ Line"); System.out.println("# Ticket"); System.out.println("# " + price + " cents."); System.out.println();   // Update the total collected with the balance. total = total + balance; // Clear the balance. balance = 0; } out är ett objekt (jfr stdout I C) Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Operator overloading 4 + 5 9 "wind" + "ow" "window" "Result: " + 6 + means integer addition 9 "wind" + "ow" + means string concatenation "window" The integer is automatically converted to a string "Result: " + 6 "Result: 6" try out in codepad "# " + price + " cents" "# 500 cents" Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

What is printed? 11hello hello56 System.out.println(5 + 6 + "hello"); then: write class person live hello56 Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Objektorienterad programmering d2 Method summary Methods implement all object behavior. A method has a name and a return type. The return-type may be void. A non-void return type means the method will return a value to its caller. A method might take parameters. Parameters bring values in from outside for the method to use. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Reflecting on the ticket machines Their behavior is inadequate in several ways: No checks on the amounts entered. No refunds. No checks for a sensible initialization. How can we do better? We need more sophisticated behavior. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Making choices in Java boolean condition to be tested ‘if’ keyword actions if condition is true if(perform some test) { Do these statements if the test gave a true result } else { Do these statements if the test gave a false result actions if condition is false ‘else’ keyword Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Making a choice in the ticket machine public void insertMoney(int amount) { if(amount > 0) { balance = balance + amount; } else { System.out.println( "Use a positive amount: " + amount); Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

How do we write 'refundBalance'? write method in BlueJ; first: do it wrong Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Variables – a recap Fields are one sort of variable: They store values through the life of an object values that determine an object’s state. They are accessible throughout the class. Parameters are another sort of variable: They receive values from outside the method. They help a method complete its task. Each call to the method receives a fresh set of values. Parameter values are short lived. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Objektorienterad programmering d2 Local variables Methods can define their own, local variables: Short lived, like parameters. The method sets their values. Used for ‘temporary’ calculation and storage. They exist only as long as the method is being executed. They are only accessible from within the method. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Local variables A local variable public int refundBalance() { int amountToRefund; amountToRefund = balance; balance = 0; return amountToRefund; } No visibility modifier Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Scope and lifetime Each block defines a new scope. Class, method and statement. Scopes may be nested: statement block inside another block inside a method body inside a class body. Scope is static (textual). Lifetime is dynamic (runtime). Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Objektorienterad programmering d2 Scope highlighting Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Objektorienterad programmering d2 Visibility of names C, a, f, g, h, b are visible here C, a, f, g, h, c are visible here C, a, f, g, h, c, d are visible here C, a, f, g, h, c, d, e are visible here C, a, f, g, h c, d are visible here C, a, f, g, h, obj are visible here and also obj.a, obj.f, obj.g, obj.h Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Objektorienterad programmering d2 Scope and lifetime The scope of a local variable is the block in which it is declared. The lifetime of a local variable is the time of execution of the block in which it is declared. The scope of a field is its whole class. The lifetime of a field is the lifetime of its containing object. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Review (1) Class bodies contain fields, constructors and methods. Fields store values that determine an object’s state. Constructors initialize objects – particularly their fields. Methods implement the behavior of objects. Om tid över – ta paketexemplet Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Review (2) Fields, parameters and local variables are all variables. Fields persist for the lifetime of an object. Parameters are used to receive values into a constructor or method. Local variables are used for short-lived temporary storage. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1

Objektorienterad programmering d2 Review (3) Methods have a return type. void methods do not return anything. non-void methods return a value. non-void methods have (at least) one return statement a return statement must be reached during the execution of such methods. Return måste nås i alla programflöden. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1 DAT050, 18/19, lp 1

Review (4) ‘Correct’ behavior often requires objects to make decisions. Objects can make decisions via conditional (if) statements. A true-or-false test allows one of two alternative courses of actions to be taken. Objektorienterad programmering, DAT050, DAI2, 18/19, lp 1