Java Generics Chapter 9: Design patterns. /** * INF329 - Spring 2007 * Presented by Stian Stokkenes * */ {

Size: px
Start display at page:

Download "Java Generics Chapter 9: Design patterns. /** * INF329 - Spring 2007 * Presented by Stian Stokkenes * */ {"

Transcription

1 Java Generics Chapter 9: Design patterns /** * INF329 - Spring 2007 * Presented by Stian Stokkenes * stian@stokkenes.de */ {

2 Chapter 9 - Design patterns Goal: Show how design patterns can take advantage of Java generics Viewing the following patterns: Visitor pattern Interpreter pattern Function pattern Strategy pattern Subject- / Observer pattern 2

3 9.1 Visitor pattern Data structure often defined by case analysis and recursion A binary tree of type Tree<E> is A leaf containing a single value of type E A branch containing a left and a right sub tree of types E Represented in OO language by abstract class Each case by subclass Abstract class declares abstract method for all possible operation Subclasses implements the methods 3

4 ex.1 Simple tree and client abstract class Tree<E>{ abstract public String tostring(); abstract public double sum(); public static <E> Tree<E> leaf(final E e){ return new Tree<E>(){ public String tostring(){return e.tostring(); public Double sum(){return ((Number)e).doubleValue(); ; public static <E> Tree<E> branch(final Tree<E> l, final Tree<E> r){ return new Tree<E>(){ public String tostring(){ return ( +l.tostring()+ ^ +r.tostring()+ ) ; public Double sum(){return l.sum() + r.sum(); ; class TreeClient{ public static void main(string[] args){ Tree<Integer> t = Tree.branch(Tree.branch(Tree.leaf(1), Tree.leaf(2)),Tree.leaf(3)); assert t.tostring().equals( ((1^2)^3) ); assert t.sum() == 6; 4

5 9.1 Visitor pattern Difficult to know all operations required on data structure Different developers responsible for definition classes and client classes of the definition classes Visitor pattern -> possible to provide new operations without modifying the classes that defines the data structure Abstract class declares visit method. Visitor as argument Visitor implements interface that specifies one method for each case in the specification of the structure Subclasses implement visit method by calling method of the visitor for the corresponding case. 5

6 ex.2 Tree with visitors abstract class Tree<E> { public interface Visitor<E, R>{ public R leaf(e elt); public R branch(r left, R right); public abstract <R> R visit(visitor<e, R> v); public static <T> Tree<T> leaf(final T e){ return new Tree<T>(){ public <R> R visit(visitor<t, R> v){return v.leaf(e); ; public static <T> Tree<T> branch(final Tree<T> l, final Tree<T> r){ return new Tree<T>(){ public <R> R visit(visitor<t, R> v){ return v.branch(l.visit(v), r.visit(v)); ; 6

7 9.1 Visitor pattern Abstract class Tree<E> only one abstract method Interface Visitor<E, R> specifies two method leaf Accepts a value of type E Returns value of type R branch Accept two values of type R Returns value of type R Subclasses implements visit leaf by invoking leaf method of visitor on element in leaf branch By invoking branch method of visitor of the visitor on the result of recursive calls of the visitor on the left and right subtrees. 7

8 9.1 Visitor pattern Without generics each visitor would have to return a result of type Object many additional casts would be required visitors often designed to not return a value result often accumulated in variable local to visitor complicating flow of data through the program With generics each visitor has two type parameters One for the element type of the tree One for the return type of the visitor 8

9 ex.3 Client with visitors class treeclient { public static <T> String tostring(tree<t> t){ return t.visit(new Tree.Visitor<T, String>(){ public String leaf(t e){ return e.tostring(); public String branch(string l, String r){ return ( + l + ^ + r + ) ; ); public static <N extends Number> double sum(tree<n> t){ return t.visit(new Tree.Visitor<N, Double>() { public Double leaf(n e){ return e.doublevalue(); public Double branch(double l, Double r){ return l+r; ); public static void main(string[] args){ Tree<Integer> t = Tree.branch(Tree.branch(Tree.leaf(1), Tree.leaf(2)),Tree.leaf(3)); assert tostring(t).equals( ((1^2)^3) ); assert sum(t) == 6; 9

10 9.1 Visitor pattern Sum method more precise with visitors With simple trees Sum need type signature to indicate that it works on any element type Requires cast to convert leaf to Number Class cast error is raised at run time if sum invoked on tree without numbers With visitors Sum method may have type signature that indicate it works only on elements that are numbers No cast required Type error reported at compile time 10

11 9.2 Interpreter pattern One use of trees is to represent expressions in a programming language Represented by abstract class Each expression represented by subclass Abstract method to evaluate an expression Each subclass implements the method as appropiate for the coreresponding expression With generics Possible to parameterize expression type by type of expression, e.g. Exp<Integer>, Exp<Pair<Integer, Integer>> 11

12 ex.4 Interpreter with generics class Pair<A,B> { private final A left; private final B right; public Pair(A l, B r){ left = l; right = r; public A left(){ return left; public B right(){ return right; abstract class Exp<T> { abstract public T eval(); static Exp<Integer> lit(final int i){ return new Exp<Integer>(){ public Integer eval(){ return i; ; static Exp<Integer> plus(final Exp<Integer> e1, final Exp<Integer> e2){ return new Exp<Integer>(){ public Integer eval(){ return e1.eval()+e2.eval(); ; static <A, B> Exp<Pair<A,B>> pair(final Exp<A> e1, final Exp<B> e2){ return new Exp<Pair<A, B>>(){ public Pair<A, B> eval(){ return new Pair<A,B>(e1.eval(),e2.eval()); ; static <A, B> Exp<A> left(final Exp<Pair<A, B>> e){ return new Exp<A>(){ public A eval() { return e.eval().left(); ; static <A, B> Exp<B> right(final Exp<Pair<A, B>> e){ return new Exp<B>(){ public B eval() { return e.eval().right(); ; public static void main(string[] args){ Exp<Integer> e = left(pair(plus(lit(3),lit(4)),lit(5))); assert e.eval() == 7; 12

13 9.2 Interpreter pattern In example: Integer literal of type Exp<Integer> Sum expression of type Exp<Integer>, with two sub expressions of type Exp<Integer> Expression to construct pair of type Exp<Pair<A, B>> with two sub expressions of type Exp<A> and Exp<B> Expression to select the left component of a pair of type Exp<A> with subexpression of type Exp<Pair<A, B>> Expression to select the left component of a pair of type Exp<B> with subexpression of type Exp<Pair<A, B>> 13

14 9.3 Function pattern Converts an arbitrary method into an object Relation between an function and the corresponding method similar to relation between Comparator and compareto method Generic version demonstrate how to use type variable in throws clause of a method declaration. Useful when different instances of a class contain methods that may be useful when different instances of a class contain methods that may raise different checked exceptions See example 5. 14

15 9.3 Function pattern Example defines class, Function <A, B, X>, which represent a function Class contains abstract method, apply Accepts argument of type A Returns result of type B May throw exception of type X Class contains applyall method Accept argument of type List<A> Returns result of type List<B> May throw exception of type X Invokes apply on each element in argument list to produce result list 15

16 9.3 Function pattern Main method defines three objects 1. length of type Function<String, Integer, Error> Accepts String Returns integer (Length of given String) Since it raises no checked exceptions, the third is set to error (Could be set to RuntimeException) 2. forname of type Function<String, Class<?>, ClassnotFoundException> Accepts String Returns a class named by given String Apply may throw ClassNotFoundException, which is given as the third parameter 3. getrunmethod of type Function<String, Method, Exception> Accepts String Returns a method named run in the class named by the given String Body of the method might raise a ClassNotFoundException or NoSuchMethodException, so third parameter is taken to be Exception. 16

17 9.3 Function pattern Last example shows chief limitations of giving generics types to exception Often no suitable class or interface that contains all exceptions the function may raise. Forced to fall back on Exception To general to provide useful information 17

18 9.3 Function pattern % Typical run of code in example 5: % java Functions java.lang.thread java.lang.runnable [16, 18] [class java.lang.thread, interface java.lang.runnable] [public void java.lang.thread.run(), public abstract void java.lang.runnable.run()] % java Functions java.lang.thread java.util.list [16, 14] [class java.lang.thread, interface java.util.list] java.lang.nosuchmethodexception: java.util.list.run() % java Functions java.lang.thread Inf329 [16, 6] java.lang.classnotfoundexception: Inf329 java.lang.classnotfoundexception: Inf329 18

19 9.4 Strategy pattern Used to decouple a method from an object Allowing to supply many possible instances of the method Illustrated by considering how tax payers may apply different tax strategies A hierarchy for tax payers and a related hierarchy for tax strategies One default strategy applies to any tax payer One subclass of tax payer is a trust One subclass of default strategy applies only to trust 19

20 9.4 Strategy pattern Example illustrate use of type variables with recursive bounds Applied to clarify the connection between tax payer and associated tax strategies Example also illustrate use of getthis, which allows programmer to assign more precise type to this when type variables with recursive bounds appear See example 6. 20

21 9.4 Strategy pattern Generics allows programmer to specialize a given tax strategy to a given type of tax payer compiler to detect when a strategy is applied to the wrong type of tax payer e.g truststrategy.computetax(person); //compile-time error Without generics computetax would have to accept an argument of type TaxPayer and cast it to trust, and exception would be thrown at run-time 21

22 9.4 Strategy pattern Example illustrates structuring technique of parallel class hierarchies One class hierarchy consist of TaxPayer, Person and Trust A parallel class hierarchy consist of strategies corresponding to each off these DefaultTaxStrategy and DodgingTaxStrategy apply to any Taxpayer No specialized strategy apply to Person TrustTaxStrategy specialized for Trust 22

23 9.4 Strategy pattern Usually, some connection between such parallel hierarchies In this case, computetax method for a TaxStrategy that is parallel to a given Taxpayer expects an argument that is of the corresponding type e.g. computetax method for TrustTaxStrategy expects argument of type Trust With generics, this connection can be captured in the types themselves e.g. TaxStrategy<P> expects an argument of type P, where P must be subclass of TaxPayer By using this technique, generics can often be used to capture similar relations in other parallel hierarchies 23

24 9.4 Strategy pattern In example, instead of this we use a method called getthis Used because this doesn t have type P e.g. Person extends TaxPayer<Person>, so P is the same as Person within the class In fact, this will have the same type as P, but the compiler doesn't know that Returns the same value as this, but gives it the type P Declared abstract in the base class Because it declares the type for getthis, but doesn't declare the body Body declared in the final subclasses Person and Trust Useful in situations whenever one wants to use this in the base type with more specific type provided by the type parameter 24

25 9.5 Subject-Observer pattern Like strategy pattern, the Subject-Observer (SO) pattern uses parallel class hierarchies, but requires two type variables with recursive bounds One to stand for the specific kind of subject One to stand for the specific kind of observer The java library implements a nongeneric version of SO in the package java.util with the class Observable and the interface Observer Observable class contains methods to register observers, to indicate that observable has changed and to notify all observers of any changes among others 25

26 9.5 Subject-Observer pattern The Observer interface specifies the update method that is called by notifyobservers Takes two parameters 1. Observable The subject that has changed 2. Object The broadcast argument The appearance of Object indicates an opportunity to generify Should be generefied by adding type parameter A, corresponding to the argument type Observable and Observer can be replaced with type parameters S and O Within the update method of the observer, the programmer may call on any method supported by the subject S without first requirig a cast 26

27 9.5 - Subject-Observer pattern /* Observable and observer before generics */ package java util; public class Observable { pulic void addobserver(observer O){ protected void clearchanged(){ public int countobservers(){ public void deleteobserver(observer O){ public boolean haschanged(){ public void notifyobservers(){ public boid notifyobservers(object arg){ protected void setchanged(){ package java.util; public interface Observer { public void update(observable o, Object arg); 27

28 9.5 - Subject-Observer pattern /* Observable with generics */ package java.util; class StubException extends UnsupportedOperationException { public class Observable<S extends Observable<S, O, A>, O extends Observer<S, O, A>, A> { public void addobserver(o o){throw new StubException(); protected void clearchanged(){ throw new StubException(); public int countobservers(){ throw new StubException(); public void deleteobserver(o o){throw new StubException(); public boolean haschanged(){throw new StubException(); public void notifyobservers(){throw new StubException(); public void notifyobservers(a a){ throw new StubException(); protected void setchanged(){throw new StubException(); 28

29 9.5 - Subject-Observer pattern /* Observer with generics */ package java.util; public interface Observer<S extends Observable<S, O, A>, O extends Observer<S, O, A>, A> { public void update(s o, A a); 29

30 9.5 Subject-Observer pattern As an example, a currency converter is presented The converter allows to enter conversion rates for three currencies Changing the entry for a rate, causes the corresponding value to be recomputed Changing the entry for a value, causes all the values to be recomputed The client instantiates the pattern by Declaring CModel to be a subclass of Observable Declaring CView to be a subinterface of Observer Instantiates the argument type to Currency 30

31 9.5 Subject-Observer pattern CModel class invokes the update method of RateView whenever a rate is changed, Passing the corresponding currency as the argument Invokes the update method of ValueView whenever a value is changed, passing null as the argument See example 7. 31

32 //End of chapter 9

Outline. CS6202 Java Generics 1

Outline. CS6202 Java Generics 1 Outline Overview Subtyping and Wildcard Comparison and Bounds Declaration and Erasure Reification and Reflection Collections Iterator, Iterable, Collection Set, Queues, List, Maps Design Patterns Other

More information

Outline. Iterator/Iterable. Main Interface s for Collections

Outline. Iterator/Iterable. Main Interface s for Collections Outline Overview Subtyping and Wildcard Comparison and Bounds Declaration and Erasure Reification and Reflection Collections Iterator, Iterable, Collection Set, Queues, List, Maps Design Patterns Other

More information

IT 313 Advanced Application Development

IT 313 Advanced Application Development Page 1 of 10 IT 313 Advanced Application Development Final Exam -- March 13, 2016 Part A. Multiple Choice Questions. Answer all questions. You may supply a reason or show work for partial credit. 5 points

More information

ENGLISH Page 1 of 6. EXAM IN COURSE TDT4100 Object-Oriented Programming / IT1104 Programming, Advanced Course. Tuesday 29. Mai

ENGLISH Page 1 of 6. EXAM IN COURSE TDT4100 Object-Oriented Programming / IT1104 Programming, Advanced Course. Tuesday 29. Mai ENGLISH Page 1 of 6 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap EXAM IN COURSE

More information

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS

AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this

More information

Java Security. Compiler. Compiler. Hardware. Interpreter. The virtual machine principle: Abstract Machine Code. Source Code

Java Security. Compiler. Compiler. Hardware. Interpreter. The virtual machine principle: Abstract Machine Code. Source Code Java Security The virtual machine principle: Source Code Compiler Abstract Machine Code Abstract Machine Code Compiler Concrete Machine Code Input Hardware Input Interpreter Output 236 Java programs: definitions

More information

Introduction to Programming Using Java (98-388)

Introduction to Programming Using Java (98-388) Introduction to Programming Using Java (98-388) Understand Java fundamentals Describe the use of main in a Java application Signature of main, why it is static; how to consume an instance of your own class;

More information

Exception Handling. Sometimes when the computer tries to execute a statement something goes wrong:

Exception Handling. Sometimes when the computer tries to execute a statement something goes wrong: Exception Handling Run-time errors The exception concept Throwing exceptions Handling exceptions Declaring exceptions Creating your own exception Ariel Shamir 1 Run-time Errors Sometimes when the computer

More information

Exception Handling. Run-time Errors. Methods Failure. Sometimes when the computer tries to execute a statement something goes wrong:

Exception Handling. Run-time Errors. Methods Failure. Sometimes when the computer tries to execute a statement something goes wrong: Exception Handling Run-time errors The exception concept Throwing exceptions Handling exceptions Declaring exceptions Creating your own exception 22 November 2007 Ariel Shamir 1 Run-time Errors Sometimes

More information

Chapter 12 Exception Handling

Chapter 12 Exception Handling Chapter 12 Exception Handling 1 Motivations Goal: Robust code. When a program runs into a runtime error, the program terminates abnormally. How can you handle the runtime error so that the program can

More information

CS115. Chapter 17 Exception Handling. Prof. Joe X. Zhou Department of Computer Science. To know what is exception and what is exception handling

CS115. Chapter 17 Exception Handling. Prof. Joe X. Zhou Department of Computer Science. To know what is exception and what is exception handling CS115 Pi Principles i of fcomputer Science Chapter 17 Exception Handling Prof. Joe X. Zhou Department of Computer Science CS115 ExceptionHandling.1 Objectives in Exception Handling To know what is exception

More information

Chapter 5 Object-Oriented Programming

Chapter 5 Object-Oriented Programming Chapter 5 Object-Oriented Programming Develop code that implements tight encapsulation, loose coupling, and high cohesion Develop code that demonstrates the use of polymorphism Develop code that declares

More information

COMP 213. Advanced Object-oriented Programming. Lecture 17. Exceptions

COMP 213. Advanced Object-oriented Programming. Lecture 17. Exceptions COMP 213 Advanced Object-oriented Programming Lecture 17 Exceptions Errors Writing programs is not trivial. Most (large) programs that are written contain errors: in some way, the program doesn t do what

More information

CSC System Development with Java. Exception Handling. Department of Statistics and Computer Science. Budditha Hettige

CSC System Development with Java. Exception Handling. Department of Statistics and Computer Science. Budditha Hettige CSC 308 2.0 System Development with Java Exception Handling Department of Statistics and Computer Science 1 2 Errors Errors can be categorized as several ways; Syntax Errors Logical Errors Runtime Errors

More information

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of

Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of Introduction to Software Engineering (2+1 SWS) Winter Term 2009 / 2010 Dr. Michael Eichberg Vertretungsprofessur Software Engineering Department of Computer Science Technische Universität Darmstadt Dr.

More information

are most specifically concerned with

are most specifically concerned with Observer Behavioral Patterns Behavioral patterns are those patterns that are most specifically concerned with communication between objects Introduction Name Observer Also Known As Dependents, Publish-Subscribe

More information

Polymorphism. return a.doublevalue() + b.doublevalue();

Polymorphism. return a.doublevalue() + b.doublevalue(); Outline Class hierarchy and inheritance Method overriding or overloading, polymorphism Abstract classes Casting and instanceof/getclass Class Object Exception class hierarchy Some Reminders Interfaces

More information

Observer Pattern. CS580 Advanced Software Engineering October 31, Yu Sun, Ph.D.

Observer Pattern. CS580 Advanced Software Engineering   October 31, Yu Sun, Ph.D. Observer Pattern CS580 Advanced Software Engineering http://cs356.yusun.io October 31, 2014 Yu Sun, Ph.D. http://yusun.io yusun@csupomona.edu Announcements Quiz 5 Singleton Pattern Abstract Factory Pattern

More information

EXAMPLE ANSWERS. EXAM IN COURSE TDT4100 Object-Oriented Programming / IT1104 Programming, Advanced Course. Tuesday 29. Mai

EXAMPLE ANSWERS. EXAM IN COURSE TDT4100 Object-Oriented Programming / IT1104 Programming, Advanced Course. Tuesday 29. Mai ENGLISH Page 1 of 15 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap EXAMPLE ANSWERS

More information

Subclassing for ADTs Implementation

Subclassing for ADTs Implementation Object-Oriented Design Lecture 8 CS 3500 Fall 2009 (Pucella) Tuesday, Oct 6, 2009 Subclassing for ADTs Implementation An interesting use of subclassing is to implement some forms of ADTs more cleanly,

More information

CSE 413 Winter 2001 Midterm Exam

CSE 413 Winter 2001 Midterm Exam Name ID # Score 1 2 3 4 5 6 7 8 There are 8 questions worth a total of 75 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. You may refer to

More information

Object-Oriented Design Lecture 14 CSU 370 Fall 2007 (Pucella) Friday, Nov 2, 2007

Object-Oriented Design Lecture 14 CSU 370 Fall 2007 (Pucella) Friday, Nov 2, 2007 Object-Oriented Design Lecture 14 CSU 370 Fall 2007 (Pucella) Friday, Nov 2, 2007 (These notes are very rough, and differ somewhat from what I presented in class; I am posting them here to supplemental

More information

Good Luck! CSC207, Fall 2012: Quiz 3 Duration 25 minutes Aids allowed: none. Student Number: Lecture Section: L0101. Instructor: Horton

Good Luck! CSC207, Fall 2012: Quiz 3 Duration 25 minutes Aids allowed: none. Student Number: Lecture Section: L0101. Instructor: Horton CSC207, Fall 2012: Quiz 3 Duration 25 minutes Aids allowed: none Student Number: Last Name: Lecture Section: L0101 First Name: Instructor: Horton Please fill out the identification section above as well

More information

1 Shyam sir JAVA Notes

1 Shyam sir JAVA Notes 1 Shyam sir JAVA Notes 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write

More information

Binghamton University. CS-140 Fall Problem Solving. Creating a class from scratch

Binghamton University. CS-140 Fall Problem Solving. Creating a class from scratch Problem Solving Creating a class from scratch 1 Recipe for Writing a Class 1. Write the class boilerplate stuff 2. Declare Fields 3. Write Creator(s) 4. Write accessor methods 5. Write mutator methods

More information

Computational Expression

Computational Expression Computational Expression Variables, Primitive Data Types, Expressions Janyl Jumadinova 28-30 January, 2019 Janyl Jumadinova Computational Expression 28-30 January, 2019 1 / 17 Variables Variable is a name

More information

Chapter 13 Exception Handling

Chapter 13 Exception Handling Chapter 13 Exception Handling 1 Motivations When a program runs into a runtime error, the program terminates abnormally. How can you handle the runtime error so that the program can continue to run or

More information

CSE 431S Type Checking. Washington University Spring 2013

CSE 431S Type Checking. Washington University Spring 2013 CSE 431S Type Checking Washington University Spring 2013 Type Checking When are types checked? Statically at compile time Compiler does type checking during compilation Ideally eliminate runtime checks

More information

BBM 102 Introduction to Programming II Spring Exceptions

BBM 102 Introduction to Programming II Spring Exceptions BBM 102 Introduction to Programming II Spring 2018 Exceptions 1 Today What is an exception? What is exception handling? Keywords of exception handling try catch finally Throwing exceptions throw Custom

More information

Conversions and Casting

Conversions and Casting Conversions and Casting Taken and modified slightly from the book The Java TM Language Specification, Second Edition. Written by Sun Microsystems. Conversion of one reference type to another is divided

More information

Classes and Objects 3/28/2017. How can multiple methods within a Java class read and write the same variable?

Classes and Objects 3/28/2017. How can multiple methods within a Java class read and write the same variable? Peer Instruction 8 Classes and Objects How can multiple methods within a Java class read and write the same variable? A. Allow one method to reference a local variable of the other B. Declare a variable

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 04: Exception Handling MOUNA KACEM mouna@cs.wisc.edu Spring 2018 Creating Classes 2 Introduction Exception Handling Common Exceptions Exceptions with Methods Assertions

More information

Le L c e t c ur u e e 5 To T p o i p c i s c t o o b e b e co c v o e v r e ed e Exception Handling

Le L c e t c ur u e e 5 To T p o i p c i s c t o o b e b e co c v o e v r e ed e Exception Handling Course Name: Advanced Java Lecture 5 Topics to be covered Exception Handling Exception HandlingHandlingIntroduction An exception is an abnormal condition that arises in a code sequence at run time A Java

More information

Object Oriented Programming Exception Handling

Object Oriented Programming Exception Handling Object Oriented Programming Exception Handling Budditha Hettige Department of Computer Science Programming Errors Types Syntax Errors Logical Errors Runtime Errors Syntax Errors Error in the syntax of

More information

Comp215: Thinking Generically

Comp215: Thinking Generically Comp215: Thinking Generically Dan S. Wallach (Rice University) Copyright 2015, Dan S. Wallach. All rights reserved. Functional APIs On Wednesday, we built a list of Objects. This works. But it sucks. class

More information

Fundamentals of Object Oriented Programming

Fundamentals of Object Oriented Programming INDIAN INSTITUTE OF TECHNOLOGY ROORKEE Fundamentals of Object Oriented Programming CSN- 103 Dr. R. Balasubramanian Associate Professor Department of Computer Science and Engineering Indian Institute of

More information

Java Bytecode (binary file)

Java Bytecode (binary file) Java is Compiled Unlike Python, which is an interpreted langauge, Java code is compiled. In Java, a compiler reads in a Java source file (the code that we write), and it translates that code into bytecode.

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 04: Exception Handling MOUNA KACEM mouna@cs.wisc.edu Fall 2018 Creating Classes 2 Introduction Exception Handling Common Exceptions Exceptions with Methods Assertions and

More information

Weiss Chapter 1 terminology (parenthesized numbers are page numbers)

Weiss Chapter 1 terminology (parenthesized numbers are page numbers) Weiss Chapter 1 terminology (parenthesized numbers are page numbers) assignment operators In Java, used to alter the value of a variable. These operators include =, +=, -=, *=, and /=. (9) autoincrement

More information

3. Java - Language Constructs I

3. Java - Language Constructs I Educational Objectives 3. Java - Language Constructs I Names and Identifiers, Variables, Assignments, Constants, Datatypes, Operations, Evaluation of Expressions, Type Conversions You know the basic blocks

More information

QUIZ 2 Introduction to Computer Science (COMP 250) Mon. March 2, 2009 Professor Michael Langer

QUIZ 2 Introduction to Computer Science (COMP 250) Mon. March 2, 2009 Professor Michael Langer QUIZ 2 Introduction to Computer Science (COMP 250) Mon. March 2, 2009 Professor Michael Langer STUDENT NAME: ID: The exam consists of five questions. There are a total of 10 points. You may use the back

More information

INDEX. A SIMPLE JAVA PROGRAM Class Declaration The Main Line. The Line Contains Three Keywords The Output Line

INDEX. A SIMPLE JAVA PROGRAM Class Declaration The Main Line. The Line Contains Three Keywords The Output Line A SIMPLE JAVA PROGRAM Class Declaration The Main Line INDEX The Line Contains Three Keywords The Output Line COMMENTS Single Line Comment Multiline Comment Documentation Comment TYPE CASTING Implicit Type

More information

6. Parametric Types and Virtual Types

6. Parametric Types and Virtual Types 6. Parametric Types and Virtual Types For many programming scenarios, subtype polymorphism is not the best choice. Often more precise type systems are desirable: Types with parameters Specialization of

More information

Syllabus & Curriculum for Certificate Course in Java. CALL: , for Queries

Syllabus & Curriculum for Certificate Course in Java. CALL: , for Queries 1 CONTENTS 1. Introduction to Java 2. Holding Data 3. Controllin g the f l o w 4. Object Oriented Programming Concepts 5. Inheritance & Packaging 6. Handling Error/Exceptions 7. Handling Strings 8. Threads

More information

CS/B.TECH/CSE(New)/SEM-5/CS-504D/ OBJECT ORIENTED PROGRAMMING. Time Allotted : 3 Hours Full Marks : 70 GROUP A. (Multiple Choice Type Question)

CS/B.TECH/CSE(New)/SEM-5/CS-504D/ OBJECT ORIENTED PROGRAMMING. Time Allotted : 3 Hours Full Marks : 70 GROUP A. (Multiple Choice Type Question) CS/B.TECH/CSE(New)/SEM-5/CS-504D/2013-14 2013 OBJECT ORIENTED PROGRAMMING Time Allotted : 3 Hours Full Marks : 70 The figures in the margin indicate full marks. Candidates are required to give their answers

More information

B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA

B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA B2.52-R3: INTRODUCTION TO OBJECT ORIENTATED PROGRAMMING THROUGH JAVA NOTE: 1. There are TWO PARTS in this Module/Paper. PART ONE contains FOUR questions and PART TWO contains FIVE questions. 2. PART ONE

More information

Casting -Allows a narrowing assignment by asking the Java compiler to "trust us"

Casting -Allows a narrowing assignment by asking the Java compiler to trust us Primitives Integral types: int, short, long, char, byte Floating point types: double, float Boolean types: boolean -passed by value (copied when returned or passed as actual parameters) Arithmetic Operators:

More information

CS 61B Discussion 5: Inheritance II Fall 2014

CS 61B Discussion 5: Inheritance II Fall 2014 CS 61B Discussion 5: Inheritance II Fall 2014 1 WeirdList Below is a partial solution to the WeirdList problem from homework 3 showing only the most important lines. Part A. Complete the implementation

More information

Casting. References. References

Casting. References. References Casting February 2, 2018 1 References Let A be a class and B be a subclass of A. A reference variable of type A may refer to an object of type either A or B. A reference variable of type B may refer to

More information

CS/ENGRD 2110 SPRING Lecture 7: Interfaces and Abstract Classes

CS/ENGRD 2110 SPRING Lecture 7: Interfaces and Abstract Classes CS/ENGRD 2110 SPRING 2019 Lecture 7: Interfaces and Abstract Classes http://courses.cs.cornell.edu/cs2110 1 Announcements 2 A2 is due Thursday night (14 February) Go back to Lecture 6 & discuss method

More information

OOPs Concepts. 1. Data Hiding 2. Encapsulation 3. Abstraction 4. Is-A Relationship 5. Method Signature 6. Polymorphism 7. Constructors 8.

OOPs Concepts. 1. Data Hiding 2. Encapsulation 3. Abstraction 4. Is-A Relationship 5. Method Signature 6. Polymorphism 7. Constructors 8. OOPs Concepts 1. Data Hiding 2. Encapsulation 3. Abstraction 4. Is-A Relationship 5. Method Signature 6. Polymorphism 7. Constructors 8. Type Casting Let us discuss them in detail: 1. Data Hiding: Every

More information

Review: Array Initializer Lists

Review: Array Initializer Lists More on Arrays Review of Arrays of ints, doubles, chars Arrays of objects Command line arguments The ArrayList class Javadoc Review Lecture 8 notes and L&L 7.1 7.2 Reading for this lecture: L&L 7.3 7.7,

More information

CSCI 135 Exam #2 Fundamentals of Computer Science I Fall 2013

CSCI 135 Exam #2 Fundamentals of Computer Science I Fall 2013 CSCI 135 Exam #2 Fundamentals of Computer Science I Fall 2013 Name: This exam consists of 6 problems on the following 6 pages. You may use your two-sided hand-written 8 ½ x 11 note sheet during the exam.

More information

Chapter 9. Exception Handling. Copyright 2016 Pearson Inc. All rights reserved.

Chapter 9. Exception Handling. Copyright 2016 Pearson Inc. All rights reserved. Chapter 9 Exception Handling Copyright 2016 Pearson Inc. All rights reserved. Last modified 2015-10-02 by C Hoang 9-2 Introduction to Exception Handling Sometimes the best outcome can be when nothing unusual

More information

Chapter 4 Defining Classes I

Chapter 4 Defining Classes I Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the

More information

CS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University

CS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University 9/5/6 CS Introduction to Computing II Wayne Snyder Department Boston University Today: Arrays (D and D) Methods Program structure Fields vs local variables Next time: Program structure continued: Classes

More information

UNIVERSITI TEKNOLOGI MALAYSIA FINAL EXAMINATION SEMESTER II, 2016 / 2017

UNIVERSITI TEKNOLOGI MALAYSIA FINAL EXAMINATION SEMESTER II, 2016 / 2017 SULIT Faculty of Computing SUBJECT CODE SUBJECT NAME YEAR/COURSE TIME DATE : VENUE : : SCSJ2154 : OBJECT ORIENTED PROGRAMMING : 2 (SCSJ / SCSV / SCSB / SCSR) : 1½ Hours INSTRUCTIONS : This test book consists

More information

Chapter 1 Getting Started

Chapter 1 Getting Started Chapter 1 Getting Started The C# class Just like all object oriented programming languages, C# supports the concept of a class. A class is a little like a data structure in that it aggregates different

More information

CSCI-142 Exam 1 Review September 25, 2016 Presented by the RIT Computer Science Community

CSCI-142 Exam 1 Review September 25, 2016 Presented by the RIT Computer Science Community CSCI-12 Exam 1 Review September 25, 2016 Presented by the RIT Computer Science Community http://csc.cs.rit.edu 1. Provide a detailed explanation of what the following code does: 1 public boolean checkstring

More information

Chapter 11: Collections and Maps

Chapter 11: Collections and Maps Chapter 11: Collections and Maps Implementing the equals(), hashcode() and compareto() methods A Programmer's Guide to Java Certification (Second Edition) Khalid A. Mughal and Rolf W. Rasmussen Addison-Wesley,

More information

Class, Variable, Constructor, Object, Method Questions

Class, Variable, Constructor, Object, Method Questions Class, Variable, Constructor, Object, Method Questions http://www.wideskills.com/java-interview-questions/java-classes-andobjects-interview-questions https://www.careerride.com/java-objects-classes-methods.aspx

More information

Operators and Expressions

Operators and Expressions Operators and Expressions Conversions. Widening and Narrowing Primitive Conversions Widening and Narrowing Reference Conversions Conversions up the type hierarchy are called widening reference conversions

More information

CISC 3115 Modern Programming Techniques Spring 2018 Section TY3 Exam 2 Solutions

CISC 3115 Modern Programming Techniques Spring 2018 Section TY3 Exam 2 Solutions Name CISC 3115 Modern Programming Techniques Spring 2018 Section TY3 Exam 2 Solutions 1. a. (25 points) A rational number is a number that can be represented by a pair of integers a numerator and a denominator.

More information

Arrays. Outline 1/7/2011. Arrays. Arrays are objects that help us organize large amounts of information. Chapter 7 focuses on:

Arrays. Outline 1/7/2011. Arrays. Arrays are objects that help us organize large amounts of information. Chapter 7 focuses on: Arrays Arrays Arrays are objects that help us organize large amounts of information Chapter 7 focuses on: array declaration and use bounds checking and capacity arrays that store object references variable

More information

Lecture 19 Programming Exceptions CSE11 Fall 2013

Lecture 19 Programming Exceptions CSE11 Fall 2013 Lecture 19 Programming Exceptions CSE11 Fall 2013 When Things go Wrong We've seen a number of run time errors Array Index out of Bounds e.g., Exception in thread "main" java.lang.arrayindexoutofboundsexception:

More information

Principles of Software Construction: Objects, Design, and Concurrency. Objects (continued) toad. Spring J Aldrich and W Scherlis

Principles of Software Construction: Objects, Design, and Concurrency. Objects (continued) toad. Spring J Aldrich and W Scherlis Principles of Software Construction: Objects, Design, and Concurrency Objects (continued) toad Spring 2012 Jonathan Aldrich Charlie Garrod School of Computer Science 2012 J Aldrich and W Scherlis Announcements

More information

interface MyAnno interface str( ) val( )

interface MyAnno interface str( ) val( ) Unit 4 Annotations: basics of annotation-the Annotated element Interface. Using Default Values, Marker Annotations. Single-Member Annotations. The Built-In Annotations-Some Restrictions. 1 annotation Since

More information

C# Programming for Developers Course Labs Contents

C# Programming for Developers Course Labs Contents C# Programming for Developers Course Labs Contents C# Programming for Developers...1 Course Labs Contents...1 Introduction to C#...3 Aims...3 Your First C# Program...3 C# The Basics...5 The Aims...5 Declaring

More information

Training topic: OCPJP (Oracle certified professional Java programmer) or SCJP (Sun certified Java programmer) Content and Objectives

Training topic: OCPJP (Oracle certified professional Java programmer) or SCJP (Sun certified Java programmer) Content and Objectives Training topic: OCPJP (Oracle certified professional Java programmer) or SCJP (Sun certified Java programmer) Content and Objectives 1 Table of content TABLE OF CONTENT... 2 1. ABOUT OCPJP SCJP... 4 2.

More information

TeenCoder : Java Programming (ISBN )

TeenCoder : Java Programming (ISBN ) TeenCoder : Java Programming (ISBN 978-0-9887070-2-3) and the AP * Computer Science A Exam Requirements (Alignment to Tennessee AP CS A course code 3635) Updated March, 2015 Contains the new 2014-2015+

More information

CSCI 135 Exam #2 Fundamentals of Computer Science I Fall 2013

CSCI 135 Exam #2 Fundamentals of Computer Science I Fall 2013 CSCI 135 Exam #2 Fundamentals of Computer Science I Fall 2013 Name: This exam consists of 6 problems on the following 6 pages. You may use your two-sided hand-written 8 ½ x 11 note sheet during the exam.

More information

Homework 6. What To Turn In. Reading. Problems. Handout 15 CSCI 334: Spring, 2017

Homework 6. What To Turn In. Reading. Problems. Handout 15 CSCI 334: Spring, 2017 Homework 6 Due 11 April Handout 15 CSCI 334: Spring, 2017 What To Turn In Please hand in work in two pieces, one for the Problems and one for the Programming (Partner Optional): Problems: Turn in handwritten

More information

F I N A L E X A M I N A T I O N

F I N A L E X A M I N A T I O N Faculty Of Computer Studies M257 Putting Java to Work F I N A L E X A M I N A T I O N Number of Exam Pages: (including this cover sheet( Spring 2011 April 4, 2011 ( 5 ) Time Allowed: ( 1.5 ) Hours Student

More information

Pace University. Fundamental Concepts of CS121 1

Pace University. Fundamental Concepts of CS121 1 Pace University Fundamental Concepts of CS121 1 Dr. Lixin Tao http://csis.pace.edu/~lixin Computer Science Department Pace University October 12, 2005 This document complements my tutorial Introduction

More information

Array. Prepared By - Rifat Shahriyar

Array. Prepared By - Rifat Shahriyar Java More Details Array 2 Arrays A group of variables containing values that all have the same type Arrays are fixed length entities In Java, arrays are objects, so they are considered reference types

More information

Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub

Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub Lebanese University Faculty of Science Computer Science BS Degree Graphical Interface and Application (I3305) Semester: 1 Academic Year: 2017/2018 Dr Antoun Yaacoub 2 Crash Course in JAVA Classes A Java

More information

CS506 Web Design & Development Final Term Solved MCQs with Reference

CS506 Web Design & Development Final Term Solved MCQs with Reference with Reference I am student in MCS (Virtual University of Pakistan). All the MCQs are solved by me. I followed the Moaaz pattern in Writing and Layout this document. Because many students are familiar

More information

CS159. Nathan Sprague

CS159. Nathan Sprague CS159 Nathan Sprague What s wrong with the following code? 1 /* ************************************************** 2 * Return the mean, or -1 if the array has length 0. 3 ***************************************************

More information

Assigned Date: August 27, 2014 Due Date: September 7, 2015, 11:59 PM

Assigned Date: August 27, 2014 Due Date: September 7, 2015, 11:59 PM 15440: Distributed Systems Fall 2015 Problem Solving Assignment 1 A Java Programming Preparation for Project 1 Assigned Date: August 27, 2014 Due Date: September 7, 2015, 11:59 PM 1. Warm Up with Some

More information

Polymorphism. CMSC 330: Organization of Programming Languages. Two Kinds of Polymorphism. Polymorphism Overview. Polymorphism

Polymorphism. CMSC 330: Organization of Programming Languages. Two Kinds of Polymorphism. Polymorphism Overview. Polymorphism CMSC 330: Organization of Programming Languages Polymorphism Polymorphism Definition Feature that allows values of different data types to be handled using a uniform interface Applicable to Functions Ø

More information

Input-Output and Exception Handling

Input-Output and Exception Handling Software and Programming I Input-Output and Exception Handling Roman Kontchakov / Carsten Fuhs Birkbeck, University of London Outline Reading and writing text files Exceptions The try block catch and finally

More information

CSci 4223 Lecture 18 April 3, 2013 Topics: OOP vs. FP

CSci 4223 Lecture 18 April 3, 2013 Topics: OOP vs. FP CSci 4223 Lecture 18 April 3, 2013 Topics: OOP vs. FP 1 Object-oriented programming vs. functional programming We ve now seen the core features of both OOP and FP. Let s compare the two paradigms, and

More information

Java Programming Course Overview. Duration: 35 hours. Price: $900

Java Programming Course Overview. Duration: 35 hours. Price: $900 978.256.9077 admissions@brightstarinstitute.com Java Programming Duration: 35 hours Price: $900 Prerequisites: Basic programming skills in a structured language. Knowledge and experience with Object- Oriented

More information

Here is a hierarchy of classes to deal with Input and Output streams.

Here is a hierarchy of classes to deal with Input and Output streams. PART 15 15. Files and I/O 15.1 Reading and Writing Files A stream can be defined as a sequence of data. The InputStream is used to read data from a source and the OutputStream is used for writing data

More information

Java Inheritance. Written by John Bell for CS 342, Spring Based on chapter 6 of Learning Java by Niemeyer & Leuck, and other sources.

Java Inheritance. Written by John Bell for CS 342, Spring Based on chapter 6 of Learning Java by Niemeyer & Leuck, and other sources. Java Inheritance Written by John Bell for CS 342, Spring 2018 Based on chapter 6 of Learning Java by Niemeyer & Leuck, and other sources. Review Which of the following is true? A. Java classes may either

More information

SYLLABUS JAVA COURSE DETAILS. DURATION: 60 Hours. With Live Hands-on Sessions J P I N F O T E C H

SYLLABUS JAVA COURSE DETAILS. DURATION: 60 Hours. With Live Hands-on Sessions J P I N F O T E C H JAVA COURSE DETAILS DURATION: 60 Hours With Live Hands-on Sessions J P I N F O T E C H P U D U C H E R R Y O F F I C E : # 4 5, K a m a r a j S a l a i, T h a t t a n c h a v a d y, P u d u c h e r r y

More information

COS 126 Midterm 1 Written Exam Fall 2012

COS 126 Midterm 1 Written Exam Fall 2012 Name:!! Login ID:!!! Precept: COS 126 Midterm 1 Written Exam Fall 2012 is test has 8 questions, weighted as indicated. e exam is closed book, except that you are allowed to use a one page single-sided

More information

Java Class Loading and Bytecode Verification

Java Class Loading and Bytecode Verification Java Class Loading and Bytecode Verification Every object is a member of some class. The Class class: its members are the (definitions of) various classes that the JVM knows about. The classes can be dynamically

More information

Exception-Handling Overview

Exception-Handling Overview م.عبد الغني أبوجبل Exception Handling No matter how good a programmer you are, you cannot control everything. Things can go wrong. Very wrong. When you write a risky method, you need code to handle the

More information

CSC 1351: Quiz 6: Sort and Search

CSC 1351: Quiz 6: Sort and Search CSC 1351: Quiz 6: Sort and Search Name: 0.1 You want to implement combat within a role playing game on a computer. Specifically, the game rules for damage inflicted by a hit are: In order to figure out

More information

Exceptions, try - catch - finally, throws keyword. JAVA Standard Edition

Exceptions, try - catch - finally, throws keyword. JAVA Standard Edition Exceptions, try - catch - finally, throws keyword JAVA Standard Edition Java - Exceptions An exception (or exceptional event) is a problem that arises during the execution of a program. When an Exception

More information

CompuScholar, Inc. 9th - 12th grades

CompuScholar, Inc. 9th - 12th grades CompuScholar, Inc. Alignment to the College Board AP Computer Science A Standards 9th - 12th grades AP Course Details: Course Title: Grade Level: Standards Link: AP Computer Science A 9th - 12th grades

More information

COE318 Lecture Notes Week 10 (Nov 7, 2011)

COE318 Lecture Notes Week 10 (Nov 7, 2011) COE318 Software Systems Lecture Notes: Week 10 1 of 5 COE318 Lecture Notes Week 10 (Nov 7, 2011) Topics More about exceptions References Head First Java: Chapter 11 (Risky Behavior) The Java Tutorial:

More information

CS 231 Data Structures and Algorithms, Fall 2016

CS 231 Data Structures and Algorithms, Fall 2016 CS 231 Data Structures and Algorithms, Fall 2016 Dr. Bruce A. Maxwell Department of Computer Science Colby College Course Description Focuses on the common structures used to store data and the standard

More information

The Sun s Java Certification and its Possible Role in the Joint Teaching Material

The Sun s Java Certification and its Possible Role in the Joint Teaching Material The Sun s Java Certification and its Possible Role in the Joint Teaching Material Nataša Ibrajter Faculty of Science Department of Mathematics and Informatics Novi Sad 1 Contents Kinds of Sun Certified

More information

CS260 Intro to Java & Android 03.Java Language Basics

CS260 Intro to Java & Android 03.Java Language Basics 03.Java Language Basics http://www.tutorialspoint.com/java/index.htm CS260 - Intro to Java & Android 1 What is the distinction between fields and variables? Java has the following kinds of variables: Instance

More information

Lecture 8: Recursion and Iteration. Exceptions. Declarative Programming.

Lecture 8: Recursion and Iteration. Exceptions. Declarative Programming. Lecture 8: Recursion and Iteration. Exceptions. Declarative Programming. September 26th, 2010 Lecture 8: Recursion and Iteration. Exceptions. Declarative Programming. (1/48) Lecture Outline Memory Management,

More information

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor.

3.Constructors and Destructors. Develop cpp program to implement constructor and destructor. 3.Constructors and Destructors Develop cpp program to implement constructor and destructor. Constructors A constructor is a special member function whose task is to initialize the objects of its class.

More information

F1 A Java program. Ch 1 in PPIJ. Introduction to the course. The computer and its workings The algorithm concept

F1 A Java program. Ch 1 in PPIJ. Introduction to the course. The computer and its workings The algorithm concept F1 A Java program Ch 1 in PPIJ Introduction to the course The computer and its workings The algorithm concept The structure of a Java program Classes and methods Variables Program statements Comments Naming

More information

Interfaces. James Brucker

Interfaces. James Brucker Interfaces James Brucker What is an Interface? An interface is a specification of (1) a required behavior any class that claims to "implement" the interface must perform the behavior (2) constant data

More information