Pieter van den Hombergh Richard van den Ham. March 1, 2018
|
|
- Angelica Booth
- 5 years ago
- Views:
Transcription
1 ,, Pieter van den Hombergh Richard van den Ham Fontys Hogeschool voor Techniek en Logistiek Type : Upper March 1, 2018 /FHTenL, March 1, /29
2 Topics, Type : Upper Type : Lower Bounds, accepting things Type : Upper /FHTenL, March 1, /29
3 , boon or bust?, Type : Upper This can be quite frustrating, if you do not grasp the concept. /FHTenL, March 1, /29
4 Java is type safe,... and the consequences are: The compiler will forbid incompatible assignments. You might need to convince the compiler with a cast that the operation is okay. Then the compiler says to runtime: Please check that cast. Runtime: Okay, If the programmer lied, I will kick ass with a ClassCastException. It helps the programmer to avoid errors or to at least find them early. ClassCastExceptions are a typical case of wrong design/implementation or wrong usage. Type : Upper /FHTenL, March 1, /29
5 Java history and evolution The Java solution may seem strange. E.g. Arrays do check against incompatible assignments. The reference type (of what you want to stick in) is type checked against the array declaration. (Safety!). Arrays of objects will accept any ref type, so Containers (ArrayList etc.) of object did not/could not check against incompatible assignments in the pre- Java5 era. e.g. ArrayList uses, you guessed it, and array of Object inside. Since Java5 1 the compiler can (statically) check against incompatible assignments. but..., Type : Upper 1 introducing generics /FHTenL, March 1, /29
6 The ideal type system, Type : Upper Only real... allowed here /FHTenL, March 1, /29
7 But it would prohibit this use..., Type : Upper /FHTenL... that hastype evolved safety, with the Java culture. March 1, /29
8 summary protects the programmer against many errors, like putting round pegs in square holes. Even with type safety the type system and usage is quite flexible. Only having reference object types and no value object types also makes the implementation efficient. You need only one binary (class file) for of List, Set etc., whereas e.g. C++ needs a new separate binary for every member type and need to recompile 2 with that member type., Type : Upper 2 see C++ templates /FHTenL, March 1, /29
9 Example - String Container Container of String p u b l i c c l a s s StringContainer { p r i v a t e String value ; p u b l i c String getvalue ( ) { r e t u r n value ; p u b l i c v o i d setvalue ( String value ) { t h i s. value = value ;, Type : Upper p u b l i c StringContainer ( String value ) { t h i s. value = value ; p u b l i c String tostring ( ) { r e t u r n value ; /FHTenL, March 1, /29
10 Example - Integer Container Container of Integer p u b l i c c l a s s IntegerContainer { p r i v a t e Integer value ; p u b l i c Integer getvalue ( ) { r e t u r n value ; p u b l i c v o i d setvalue ( Integer value ) { t h i s. value = value ;, Type : Upper p u b l i c IntegerContainer ( Integer value ) { t h i s. value = value ; p u b l i c String tostring ( ) { r e t u r n value. tostring ( ) ; /FHTenL, March 1, /29
11 Analysis of an example What is remarkable New class for every data type Basic structure is same Copy and waste Consequences: Bad extensibility Reduced maintainability Bigger chance for errors, Type : Upper /FHTenL, March 1, /29
12 Generic Container p u b l i c c l a s s GenericContainer <C> { p r i v a t e C value ; p u b l i c GenericContainer ( C value ) { t h i s. value = value ; p u b l i c C getvalue ( ) { r e t u r n value ;, Type : Upper p u b l i c v o i d setvalue ( C value ) { t h i s. value = value ; Quiz: How to implement public String tostring()? /FHTenL, March 1, /29
13 Container In stead of a concrete type we have a formal Type parameter (C in the example) The instantiation takes place based on the parameterized type All generic operations can now have a type., Type : Upper /FHTenL, March 1, /29
14 Applying GenericContainer Integer and Double containers package maingencontainer ; p u b l i c c l a s s MainGenContainer { p u b l i c s t a t i c v o i d main ( String [ ] args ) { GenericContainer<Integer> intcontainer = new GenericContainer <>(3) ; GenericContainer<Double> doublecontainer = new GenericContainer < >(3.0) ; System. out. println ( intcontainer. getvalue ( ) ) ; System. out. println ( doublecontainer. getvalue ( ) ) ;, Type : Upper /FHTenL, March 1, /29
15 in Methods A class can also have generic (static) methods. The Type parameter is applied on the current method definition only., Typed (static), method p u b l i c s t a t i c <T> T randomflip ( T head, T tail ) { r e t u r n Math. random ( ) > 0. 5? head : tail ; Type : Upper /FHTenL, March 1, /29
16 Implementation of Generic classes, type erasure Instead of the generic type, Object is used. Everywhere a type access is used, a typecast is applied for you., Type : Upper /FHTenL, March 1, /29
17 Implementation of - 2 The compiler erases the generic type information, so it is not available in the class file or at runtime. Reason: The old, pre-generics code would not know what to do. Think of the donkey in the car on sheet 7. This implies that the following code produces a compiler error. At runtime only the raw GenericContainer is available., Consequence of type erasure GenericContainer <String> genericstringcontainer = new GenericContainer <String> ( " A String " ) ; Type : Upper i f ( genericstringcontainer i n s t a n c e o f GenericContainer<String >){ //... /FHTenL, March 1, /29
18 , Implementation of - 2 This is cheating List<Integer> list = new ArrayList<Integer >() ; ( ( List ) list ). add ( " a String " ) ; System. out. println ( list. get ( 0 ) ) ; What s this? Of course if you want to cheat, you can. To prevent this kind of folly, wrap your collectiona, say Set, in a checkedset like Type : Upper Set<String> s = Collections.checkedSet( new TreeSet<>(), String -.class ); The class object, passed as second parameter, stands guard to make sure no other type gets in. You should not do this as a habit, but only if you found a problem (in your tests of course), where this usage will help you find the problem. a List, Map, Set /FHTenL, March 1, /29
19 Putting bound to types You can constrain or put on the type The extends keyword can be followed by both a class or an interface Using & you can use a combination of types public class Container <C extends Person & Serializable>... 3, Type : Upper 3 extends here applies to both classes and interfaces; read it as inherits from. /FHTenL, March 1, /29
20 Wildcard usage In generic code, <?>, called the wildcard, represents an unknown type, which is of course implicitly of type Object. You can use the wildcard with upper (of which should the type be a child) or lower (what type should at least be accepted) bound. This is the preferred usage, instead of using a raw type, that is, omitting the type parameter altogether., Type : Upper /FHTenL, March 1, /29
21 Wildcard with upper bound Upper wildcard are easy to understand: you specify what class hierarchy you accept to have a compatible assignment. You use it when a some value is produced, such as in a collection that is used as input parameter, which produces the objects. Here the list is assumed to produce Foo objects or children of Foo. So the method knows what operations are available on the objects. (These are the methods defined in type Foo)., Type : Upper /FHTenL, March 1, /29
22 Producer example Producer Example List<Shape> shapes = new ArrayList <>() ; /** * Print shape areas from list. * shapestoprint is the " producer " of the shapes * to print. * shapestoprint are printed */ v o i d printshapeareas ( Collection<? e x t e n d s Shape> shapestoprint ) { f o r ( Shape s : shapestoprint ) { i f ( s. area ( ) > 0) { System. out. println ( s. area ( ) ) ;, Type : Upper You know that what the collection will produce will be a Shape, the upper bound. /FHTenL, March 1, /29
23 Wildcard with lower bound If you want to pass a container that should receive objects that are selected in a method, than that receiving container or consumer should accept the objects to be consumed. The way to specify that is to say that the objects are the least 4 things that should be acceptable. It also implies acceptance of the super types of the acceptable type. You specify that lower bound with <? super T>. In the example on page 18, the list consumes Integers, and must accept at least these, but a super of Integer (like Number or Object) will do, but a String won t. Note that you only use this construction when defining the formal container parameter in the method taking a consumer as parameter., Type : Upper 4 Lowest in type hierarchy /FHTenL, March 1, /29
24 Consumer Example, method with consumer argument /** * Filter circles from shapes. * Collect the circles in this into a collection. * The specification ( Generic Type and all ) * should accept circles. * The collection is a " consumer " of Circle. * collection accepting circles */ v o i d collectcircles ( List<? s u p e r Circle> collection ) { f o r ( Shape c : shapes ) { i f ( c i n s t a n c e o f Circle ) { collection. add ( ( Circle ) c ) ;, Type : Upper Collection may be any Collection that accepts Circles. So a collection of Object would do, and so would a collection of any interface type that Circle implements, for instance Collection<Serializable> collection. Object Shape Circle Disk Serializable Triangle TwoDimensional getarea():double; /FHTenL, March 1, /29
25 Consumer Example, caller site List<Shape> foundshapes = new ArrayList <>() ; List<Object> foundobjects = new ArrayList <>() ; List<Circle> foundcircles = new ArrayList <>() ; toy. collectcircles ( foundobjects ) ; toy. collectcircles ( foundshapes ) ; toy. collectcircles ( foundcircles ) ; Without the wildcard with lower (super) bound, the method calls in lines 58 and 59 would be rejected by the compiler a message looking like this: BrokenToy. java :58: error : method collectcircles in class BrokenToy cannot be applied to given types ; toy. collectcircles ( foundobjects ); ˆ required : List < Circle > found : List < Object > reason : argument mismatch ; List < Object > cannot be converted to List < Circle >, Type : Upper /FHTenL, March 1, /29
26 Consumer Example wrong call Suppose Disc extends Circle. List<Disc> founddiscs = new ArrayList <>() ; toy. collectcircles ( founddiscs ) ; Than the compiler rejects with the message: GenShapeToy. java :63: error : method collectcircles in class GenShapeToy cannot be applied to given types ; toy. collectcircles ( founddiscs ); ˆ required : List <? super Circle > found : List < Disc > reason : argument mismatch ; List < Disc > cannot be converted to List <? super Circle > because it insists on a super type of circle, and disk is not, it is a sub type. It cannot guarantee that all object put into the collection will be disks, because it s implementation will stick circles is, which are not always also disk. Note that this a Java 9 error message invoked with javac -Xdiags:verbose *.java., Type : Upper /FHTenL, March 1, /29
27 P.E.C.S., P roducer E xtends C onsumer S uper PE colloquial for Pectoralis major muscle. Type : Upper Remember, or I will be back. /FHTenL, March 1, /29
28 extends and super Summary It is important to notice that the wild card types specify either the element or the container, not both. Producer specification uses extends to guarantee the type of elements that come out of that producer. A Producer of Foo is therefor specified as producing Foos or children of Foo. Consumer specification uses super to guarantee what the container will accept. Super is applicable because an instance of a type in Java is also of its super type, implying that a container of a super type will also accept the lower bound. A consumer of Bar must accept Bars, but any container that accepts Baf, the super of Bar will also fit the bill because a super declared variable will always accept a reference to a sub type object., Type : Upper /FHTenL, March 1, /29
29 Questions Questions? Questions or remarks?, Type : Upper /FHTenL, March 1, /29
ClassCastException. ClassCastException
ClassCastException ClassCastException ArrayList ArrayList Object StringContainer String value String getvalue value setvalue String value value value StringContainer String value value value String
More informationThe Enum Type. Pieter van den Hombergh Richard van den Ham. March 1, Fontys Hogeschool voor Techniek en Logistiek. The Enum Type HOM HVD
The Enum Type The Enum Type Pieter van den Hombergh Richard van den Ham Fontys Hogeschool voor Techniek en Logistiek March 1, 2018 /FHTenL The Enum Type March 1, 2018 1/12 Topics The Enum Type /FHTenL
More informationPieter van den Hombergh Thijs Dorssers Stefan Sobek. February 10, 2017
Inheritance and Inheritance and Pieter van den Hombergh Thijs Dorssers Stefan Sobek Fontys Hogeschool voor Techniek en Logistiek February 10, 2017 /FHTenL Inheritance and February 10, 2017 1/45 Topics
More informationPieter van den Hombergh Thijs Dorssers Stefan Sobek. January 11, 2018
Inheritance and Inheritance and Pieter van den Hombergh Thijs Dorssers Stefan Sobek Java Inheritance Example I Visibility peekabo Constructors Fontys Hogeschool voor Techniek en Logistiek January 11, 2018
More informationPieter van den Hombergh Richard van den Ham. February 8, 2018
Pieter van den Hombergh Richard van den Ham Fontys Hogeschool voor Techniek en Logistiek February 8, 2018 /FHTenL February 8, 2018 1/16 Collection Zoo The basic collections, well known in programming s
More informationThijs Dorssers, Pieter van den Hombergh, Richard van den Ham. May 24, 2018
Thijs Dorssers, Pieter van den Hombergh, Richard van den Ham Fontys Hogeschool voor Techniek en Logistiek May 24, 2018 /FHTenL May 24, 2018 1/11 It is just a bunch of bits But what they represent depends
More informationPieter van den Hombergh Thijs Dorssers Richard van den Ham. May 17, 2018
And And Pieter van den Hombergh Thijs Dorssers Richard van den Ham Fontys Hogeschool voor Techniek en Logistiek May 17, 2018 /FHTenL And May 17, 2018 1/14 And in /FHTenL And May 17, 2018 2/14 What is reflection
More informationPieter van den Hombergh Thijs Dorssers Stefan Sobek. June 8, 2017
Pieter van den Hombergh Thijs Dorssers Stefan Sobek Fontys Hogeschool voor Techniek en Logistiek June 8, 2017 /FHTenL June 8, 2017 1/19 Collection Zoo The basic collections, well known in programming s
More informationCSE 331 Software Design and Implementation. Lecture 14 Generics 2
CSE 331 Software Design and Implementation Lecture 14 Generics 2 Zach Tatlock / Spring 2018 Big picture Last time: Generics intro Subtyping and Generics Using bounds for more flexible subtyping Using wildcards
More informationJava Generics -- an introduction. Based on https://docs.oracle.com/javase/tutorial/java/generics/why.html
Java Generics -- an introduction Based on https://docs.oracle.com/javase/tutorial/java/generics/why.html Generics vs. Templates Templates in C++ are compiled into unique code based on the types passed
More informationCSCI-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 informationCSE 331 Software Design and Implementation. Lecture 14 Generics 2
CSE 331 Software Design and Implementation Lecture 14 Generics 2 James Wilcox / Winter 2016 Hi, I m James! Big picture Last time: Generics intro Subtyping and Generics Using bounds for more flexible subtyping
More informationJava 5 New Language Features
Java 5 New Language Features Ing. Jeroen Boydens, BLIN prof dr. ir. Eric Steegmans http://users.khbo.be/peuteman/java5/ Enterprise Programming Last session. Jeroen Boydens 1. JDK v1.4: assert 2. Generics
More informationContents. I. Classes, Superclasses, and Subclasses. Topic 04 - Inheritance
Contents Topic 04 - Inheritance I. Classes, Superclasses, and Subclasses - Inheritance Hierarchies Controlling Access to Members (public, no modifier, private, protected) Calling constructors of superclass
More informationExercise 8 Parametric polymorphism November 18, 2016
Concepts of Object-Oriented Programming AS 2016 Exercise 8 Parametric polymorphism November 18, 2016 Task 1 Consider the following Scala classes: class A class B extends A class P1[+T] class P2[T
More informationGenerics method and class definitions which involve type parameters.
Contents Topic 07 - Generic Programming I. Introduction Example 1 User defined Generic Method: printtwice(t x) Example 2 User defined Generic Class: Pair Example 3 using java.util.arraylist II. Type
More informationPrimitive Java Generic Class
Primitive Java Generic Class 1 A buffer pool is a data structure that caches records retrieved from a disk file, in order to improve an application's performance. Typically, the pool stores some sort of
More informationJava: exceptions and genericity
Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Java: exceptions and genericity Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Exceptions Exceptions
More informationJAVA V Source files Java, winter semester
JAVA Source files 17.10.2017 1 Unicode programs ~ Unicode comments, identifiers, char and string constants the rest is in ASCII (
More informationAnnouncements. Lecture 15 Generics 2. Announcements. Big picture. CSE 331 Software Design and Implementation
CSE 331 Software Design and Implementation Lecture 15 Generics 2 Announcements Leah Perlmutter / Summer 2018 Announcements Quiz 5 is due tomorrow Homework 6 due tomorrow Section tomorrow! Subtyping now
More informationCSE 331 Software Design and Implementation. Lecture 15 Generics 2
CSE 331 Software Design and Implementation Lecture 15 Generics 2 Leah Perlmutter / Summer 2018 Announcements Announcements Quiz 5 is due tomorrow Homework 6 due tomorrow Section tomorrow! Subtyping now
More informationJAVA V Assertions Java, winter semester
JAVA Assertions 1 Assertion since Java 1.4 the statement with a boolean expression a developer supposes that the expression is always satisfied (evaluates to true) if it is evaluated to false -> error
More informationLambda Expressions and Java 8 Streams. Jan Trienes, adapted by Th. Dorssers, Pieter van den Hombergh. Contents of this talk.
Java 8 s and Java 8 van den Hombergh Fontys Hogeschool voor Techniek en Logistiek February 23, 2017 and /FHTenL s and Java 8 February 23, 2017 1/28 talk Expression and Internal/External Iteration Java
More informationPieter van den Hombergh Richard van den Ham. March 17, 2018
: Network : Network, Object Pieter van den Hombergh Richard van den Ham Fontys Hogeschool voor Techniek en Logistiek March 17, 2018 /FHTenL : Network March 17, 2018 1/21 Topics, Object Some everyday life
More informationWhat is Inheritance?
Inheritance 1 Agenda What is and Why Inheritance? How to derive a sub-class? Object class Constructor calling chain super keyword Overriding methods (most important) Hiding methods Hiding fields Type casting
More informationCS 251 Intermediate Programming Methods and Classes
CS 251 Intermediate Programming Methods and Classes Brooke Chenoweth University of New Mexico Fall 2018 Methods An operation that can be performed on an object Has return type and parameters Method with
More informationCS 251 Intermediate Programming Methods and More
CS 251 Intermediate Programming Methods and More Brooke Chenoweth University of New Mexico Spring 2018 Methods An operation that can be performed on an object Has return type and parameters Method with
More informationgeneric programming alberto ferrari university of parma
generic programming alberto ferrari university of parma contents generic programming java generic programming methods & generic programming classes & generic programming java with generics generic methods
More informationPieter van den Hombergh. Fontys Hogeschool voor Techniek en Logistiek. September 9, 2016
Pieter van den Hombergh Fontys Hogeschool voor Techniek en Logistiek September 9, 2016 Contents /FHTenL September 9, 2016 2/35 UML State Uses and application In behaviour is modeled with state charts (diagrams)
More informationPolymorphism. Object Orientated Programming in Java. Benjamin Kenwright
Polymorphism Object Orientated Programming in Java Benjamin Kenwright Quizzes/Labs Every single person should have done Quiz 00 Introduction Quiz 01 - Java Basics Every single person should have at least
More informationCSCI 136 Written Exam #0 Fundamentals of Computer Science II Spring 2015
CSCI 136 Written Exam #0 Fundamentals of Computer Science II Spring 2015 Name: This exam consists of 6 problems on the following 7 pages. You may use your single-sided handwritten 8 ½ x 11 note sheet during
More informationCS1004: Intro to CS in Java, Spring 2005
CS1004: Intro to CS in Java, Spring 2005 Lecture #13: Java OO cont d. Janak J Parekh janak@cs.columbia.edu Administrivia Homework due next week Problem #2 revisited Constructors, revisited Remember: a
More informationCS-202 Introduction to Object Oriented Programming
CS-202 Introduction to Object Oriented Programming California State University, Los Angeles Computer Science Department Lecture III Inheritance and Polymorphism Introduction to Inheritance Introduction
More informationDrStrangebrac<E,T> Or how I learned to stop worrying, and love generics...
DrStrangebrac Or how I learned to stop worrying, and love generics... a presentation to The Seattle Java Users Group by Wilhelm Fizpatrick http://www.agileinformatics.com/ Java is Sun Microsystems,
More informationCS61B Lecture #25: Java Generics. Last modified: Thu Oct 19 19:36: CS61B: Lecture #25 1
CS61B Lecture #25: Java Generics Last modified: Thu Oct 19 19:36:29 2017 CS61B: Lecture #25 1 The Old Days Java library types such as List didn t used to be parameterized. All Lists were lists of Objects.
More informationCSC 172 Data Structures and Algorithms. Lecture 3 Spring 2018 TuTh 3:25 pm 4:40 pm
CSC 172 Data Structures and Algorithms Lecture 3 Spring 2018 TuTh 3:25 pm 4:40 pm Agenda Administrative aspects Java Generics Chapter 1 ADMINISTRATIVE ASPECTS Workshops Workshops Workshops begin on this
More informationOutline. Java Models for variables Types and type checking, type safety Interpretation vs. compilation. Reasoning about code. CSCI 2600 Spring
Java Outline Java Models for variables Types and type checking, type safety Interpretation vs. compilation Reasoning about code CSCI 2600 Spring 2017 2 Java Java is a successor to a number of languages,
More informationSection: Inheritance Heck
Section: Inheritance Heck Inheritance Heck (previously named slightly differently) refers to seemingly complex and contradictory behavior by the compiler and runtime system when resolving types and methods
More informationCS61B Lecture #25: Java Generics. Last modified: Thu Oct 18 21:04: CS61B: Lecture #25 1
CS61B Lecture #25: Java Generics Last modified: Thu Oct 18 21:04:53 2018 CS61B: Lecture #25 1 The Old Days Java library types such as List didn t used to be parameterized. All Lists were lists of Objects.
More informationFontys Hogeschool voor Techniek en Logistiek. March 13, 2018
Java 8 s and Java 8 Fontys Hogeschool voor Techniek en Logistiek March 13, 2018 and? /FHTenL s and Java 8 March 13, 2018 1/34 talk The other anonymous and? Java 8 and? /FHTenL s and Java 8 March 13, 2018
More informationCSE 331. Generics (Parametric Polymorphism)
CSE 331 Generics (Parametric Polymorphism) slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia http://www.cs.washington.edu/331/ 1 Parametric polymorphism
More informationWeiss 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 informationParametric polymorphism and Generics
Parametric polymorphism and Generics Today s Lecture Outline Parametric polymorphism Java generics Declaring and instantiating generics Bounded types: restricting instantiations Generics and subtyping.
More informationExercise 8 Parametric polymorphism November 17, 2017
Concepts of Object-Oriented Programming AS 2017 Exercise 8 Parametric polymorphism November 17, 2017 Task 1 Implement a list in Java or C# with two methods: public void add(int i, Object el) public Object
More informationThe collections interfaces
Generics in Java Advanced Programming 4/18/16 1 The collections interfaces Contains unique elements Maps unique keys to values 4/18/16 2 Collections in Java Array has a special language support Iterators
More informationCS 251 Intermediate Programming Inheritance
CS 251 Intermediate Programming Inheritance Brooke Chenoweth University of New Mexico Spring 2018 Inheritance We don t inherit the earth from our parents, We only borrow it from our children. What is inheritance?
More informationINSTRUCTIONS TO CANDIDATES
NATIONAL UNIVERSITY OF SINGAPORE SCHOOL OF COMPUTING MIDTERM ASSESSMENT FOR Semester 2 AY2017/2018 CS2030 Programming Methodology II March 2018 Time Allowed 90 Minutes INSTRUCTIONS TO CANDIDATES 1. This
More informationCSE Lecture 7: Polymorphism and generics 16 September Nate Nystrom UTA
CSE 3302 Lecture 7: Polymorphism and generics 16 September 2010 Nate Nystrom UTA 2 Polymorphism poly = many morph = shape Allow a variable to contain values with different types 3 Subtype polymorphism
More informationAdvanced Topics in Java and on Security in Systems Effective Generics. Eirik Eltvik 26 th of February 2007
Advanced Topics in Java and on Security in Systems Effective Generics Eirik Eltvik 26 th of February 2007 Taking care when calling Legacy code Checks at compile-time is not always appropriate When? Legacy
More informationGenerics. Computer Science and Engineering College of Engineering The Ohio State University. Lecture 10
Generics Computer Science and Engineering College of Engineering The Ohio State University Lecture 10 A Simple Component Client-side view: Pencil interface Pencil { String tostring(); void setcolor(colors
More informationCMSC 341. Nilanjan Banerjee
CMSC 341 Nilanjan Banerjee http://www.csee.umbc.edu/~nilanb/teaching/341/ Announcements Just when you thought Shawn was going to teach this course! On a serious note: register on Piazza I like my classes
More informationLecture Outline. Parametric Polymorphism and Java Generics. Polymorphism. Polymorphism
Lecture Outline Parametric Polymorphism and Java Generics Parametric polymorphism Java generics Declaring and instantiating generics Bounded types: restricting instantiations Generics and subtyping. Wildcards
More informationInheritance and Interfaces
Inheritance and Interfaces Object Orientated Programming in Java Benjamin Kenwright Outline Review What is Inheritance? Why we need Inheritance? Syntax, Formatting,.. What is an Interface? Today s Practical
More informationProgramming Exercise 14: Inheritance and Polymorphism
Programming Exercise 14: Inheritance and Polymorphism Purpose: Gain experience in extending a base class and overriding some of its methods. Background readings from textbook: Liang, Sections 11.1-11.5.
More informationException Handling Generics. Amit Gupta
Exception Handling Generics Amit Gupta Announcements Project 2 deadline 18 th Feb 9 pm. TA Consulting hours Mon Thurs B146 6 9 pm Exam 1 : Feb 15 4:30 5:20 pm Project 1 grading Exception Handling Computer
More informationGeneric types. Announcements. Raw ArrayLists. Generic types (cont.) Creating a raw ArrayList: Accessing a raw ArrayList:
Announcements PS 3 is ready Midterm exam 1: Tuesday, April 11, in class Closed book but one sheet, both sides, of A4 paper is allowed Today s topic: Generics (parameterized types) Readings for this slide
More informationClosed book but one sheet, both sides, of A4 paper is allowed. Section 2.5 of the text Generics in the Java Programming Languages by Gilad Bracha
Announcements PS 3 is ready Midterm exam 1: Tuesday, April 11, in class Closed book but one sheet, both sides, of A4 paper is allowed Today s topic: Generics (parameterized types) Readings for this slide
More information1.1. Annotations History Lesson - C/C++
1. Additions Thanks to Dr. James Heliotis. He started it all :) See also here: and see also here: and here: You need to use the tools from the Java release candidate 1 % bash % export PATH=/usr/local/j2sdk1.5.0-rc1/bin:$PATH
More informationHAS-A Relationship. Association is a relationship where all objects have their own lifecycle and there is no owner.
HAS-A Relationship Association is a relationship where all objects have their own lifecycle and there is no owner. For example, teacher student Aggregation is a specialized form of association where all
More informationCSE 331 Software Design & Implementation
CSE 331 Software Design & Implementation Hal Perkins Autumn 2013 Generics (Polymorphism) (Slides by Mike Ernst and David Notkin) 1 Varieties of abstraction Abstraction over computation: procedures int
More informationProblems. Java Generics. Example. Example. Often you need the same behavior for different kind of classes
Problems Often you need the same behavior for different kind of classes Java Generics Use Object references to accommodate any object type Use Generic classes and Method The use of Object references induces
More informationAgenda. Objects and classes Encapsulation and information hiding Documentation Packages
Preliminaries II 1 Agenda Objects and classes Encapsulation and information hiding Documentation Packages Inheritance Polymorphism Implementation of inheritance in Java Abstract classes Interfaces Generics
More informationPrototype Description. Interpreter. interpreter Calculator Design Rationales. Prototype Participants. Interpreter with Factory Method.
Onno van Roosmalen Pieter van den Hombergh Fontys Hogeschool voor Techniek en Logistiek October 3, 2014 Content Implementation Description with Factory Participants Implementation Description with Factory
More informationCS108, Stanford Handout #8. Java Generics
CS108, Stanford Handout #8 Fall, 2007-08 Nick Parlante Java Generics Java generics (added in version 5) are a mixed bag. Some uses of generics are simple to understand and make the code cleaner. They are
More informationMore On inheritance. What you can do in subclass regarding methods:
More On inheritance What you can do in subclass regarding methods: The inherited methods can be used directly as they are. You can write a new static method in the subclass that has the same signature
More informationData Structure. Recitation IV
Data Structure Recitation IV Topic Java Generics Java error handling Stack Lab 2 Java Generics The following code snippet without generics requires casting: List list = new ArrayList(); list.add("hello");
More informationOutline. 1 Generic Classes. 2 Generics and Subtyping. Generics. Guy Wiener. Generic Classes. Generics and Subtyping
Outline 1 2 Outline 1 2 (Parametric) classes are classes that have Parameters A generic class with a concrete type parameter is an instance of the generic class The type parameter can be the type of variables,
More informationCSC 1351 The Twelve Hour Exam From Hell
CSC 1351 The Twelve Hour Exam From Hell Name: 1 Arrays (Ch. 6) 1.1 public class L { int [] data ; void append ( int n) { int [] newdata = new int [ data. length +1]; for ( int i =0;i< data. length ;i ++)
More informationModule 11. Collections and Iterators. Adapted from Absolute Java, Rose Williams, Binghamton University
Module 11 Collections and Iterators Adapted from Absolute Java, Rose Williams, Binghamton University Parameterized Classes and Generics Beginning with version 5.0, Java allows class and method definitions
More informationQUIZ. What is wrong with this code that uses default arguments?
QUIZ What is wrong with this code that uses default arguments? Solution The value of the default argument should be placed in either declaration or definition, not both! QUIZ What is wrong with this code
More informationLecture 10 OOP and VB.Net
Lecture 10 OOP and VB.Net Pillars of OOP Objects and Classes Encapsulation Inheritance Polymorphism Abstraction Classes A class is a template for an object. An object will have attributes and properties.
More informationHAS-A Relationship. Association is a relationship where all objects have their own lifecycle and there is no owner.
HAS-A Relationship Association is a relationship where all objects have their own lifecycle and there is no owner. For example, teacher student Aggregation is a specialized form of association where all
More informationSpecialization of Java Generic Types
Specialization of Java Generic Types Sam BeVier, Elena Machkasova University of Minnesota, Morris July 17, 2006 Contents 1 Overview 1 1.1 Introduction.............................. 1 1.2 Specializing Type
More informationCSCE 314 Programming Languages
CSCE 314 Programming Languages! Java Generics II Dr. Hyunyoung Lee!!! 1 Type System and Variance Within the type system of a programming language, variance refers to how subtyping between complex types
More informationRules and syntax for inheritance. The boring stuff
Rules and syntax for inheritance The boring stuff The compiler adds a call to super() Unless you explicitly call the constructor of the superclass, using super(), the compiler will add such a call for
More informationIntroduction and History
Pieter van den Hombergh Fontys Hogeschool voor Techniek en Logistiek September 15, 2016 Content /FHTenL September 15, 2016 2/28 The idea is quite old, although rather young in SE. Keep up a roof. /FHTenL
More informationJava Fundamentals (II)
Chair of Software Engineering Languages in Depth Series: Java Programming Prof. Dr. Bertrand Meyer Java Fundamentals (II) Marco Piccioni static imports Introduced in 5.0 Imported static members of a class
More informationSoftware Paradigms (Lesson 3) Object-Oriented Paradigm (2)
Software Paradigms (Lesson 3) Object-Oriented Paradigm (2) Table of Contents 1 Reusing Classes... 2 1.1 Composition... 2 1.2 Inheritance... 4 1.2.1 Extending Classes... 5 1.2.2 Method Overriding... 7 1.2.3
More informationCS61B Lecture #24. Today: Java support for generic programming. Readings for today: A Java Reference, Chapter 10.
CS61B Lecture #24 Today: Java support for generic programming Readings for today: A Java Reference, Chapter 10. Readings for Monday: Data Structures, 6.4. Last modified: Fri Oct 19 19:33:03 2012 CS61B:
More informationComp215: 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 information8 Understanding Subtyping
Object-Oriented Design Lecture 8 CS 3500 Fall 2010 (Pucella) Friday/Tuesday, Oct 8/12, 2010 8 Understanding Subtyping Subtpying is a great way to enable client-side reuse, requiring a client to write a
More informationLambdas and Generics (Intro)
Lambdas and Generics (Intro) Dan S. Wallach and Mack Joiner, Rice University Copyright 2016 Dan S. Wallach, All Rights Reserved New this week in Subversion! week02-lists (check it out!) edu/rice/week2lists/glist.java
More informationC++ Important Questions with Answers
1. Name the operators that cannot be overloaded. sizeof,.,.*,.->, ::,? 2. What is inheritance? Inheritance is property such that a parent (or super) class passes the characteristics of itself to children
More informationPolymorphism. 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 informationInheritance (continued) Inheritance
Objectives Chapter 11 Inheritance and Polymorphism Learn about inheritance Learn about subclasses and superclasses Explore how to override the methods of a superclass Examine how constructors of superclasses
More informationGenerics עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Generics עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Example List myintlist = new LinkedList(); // 1 myintlist.add(new Integer(0)); // 2 Integer x = myintlist.iterator().next(); // 3 3 Example
More informationGenerics עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון
Generics עזאם מרעי המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 Example List myintlist = new LinkedList(); // 1 myintlist.add(new Integer(0)); // 2 Integer x = (Integer) myintlist.iterator().next(); // 3
More informationUnit3: Java in the large. Prepared by: Dr. Abdallah Mohamed, AOU-KW
Prepared by: Dr. Abdallah Mohamed, AOU-KW 1 1. Introduction 2. Objects and classes 3. Information hiding 4. Constructors 5. Some examples of Java classes 6. Inheritance revisited 7. The class hierarchy
More informationChapter 6 Introduction to Defining Classes
Introduction to Defining Classes Fundamentals of Java: AP Computer Science Essentials, 4th Edition 1 Objectives Design and implement a simple class from user requirements. Organize a program in terms of
More informationMore Relationships Between Classes
More Relationships Between Classes Inheritance: passing down states and behaviors from the parents to their children Interfaces: grouping the methods, which belongs to some classes, as an interface to
More informationCOMP6700/2140 Generic Methods
COMP6700/2140 Generic Methods Alexei B Khorev and Josh Milthorpe Research School of Computer Science, ANU March 2017 Alexei B Khorev and Josh Milthorpe (RSCS, ANU) COMP6700/2140 Generic Methods March 2017
More informationOn the Algorithm for Specializing Java Programs with Generic Types
On the Algorithm for Specializing Java Programs with Generic Types Daniel Selifonov, Nathan Dahlberg, Elena Machkasova Computer Science Discipline University of Minnesota Morris Morris MN, 56267 selif004,dahlb061,elenam@umn.edu
More informationPieter van den Hombergh. September 9, 2015
Pieter van den Hombergh Fontys Hogeschool voor Techniek en Logistiek September 9, 2015 /FHTenL September 9, 2015 1/27 My Helpers, Tobias Derksen (DE) and me, Pieter van den Hombergh (mailto:p.vandenhombergh@fontys.nl).
More informationCS-140 Fall 2018 Test 2 Version A Nov. 12, Name:
CS-140 Fall 2018 Test 2 Version A Nov. 12, 2018 Name: 1. (10 points) For the following, Check T if the statement is true, or F if the statement is false. (a) X T F : A class in Java contains fields, and
More informationExam Review. CSE 331 Section 10 12/6/12. Slides by Kellen Donohue with material from Mike Ernst
Exam Review CSE 331 Section 10 12/6/12 Slides by Kellen Donohue with material from Mike Ernst Course Logistics All homework s done (except late days) HW8 returned HW7 being graded HW9 will be graded during
More informationCOMP 401 Fall Recitation 7: Factories and Lists
COMP 401 Fall 2017 Recitation 7: Factories and Lists Agenda High-level introduction to Factories Factory Example/Exercise Introduction to Lists List Performance Exercise Quiz 2 Recitation Source Code Please
More informationArray Basics: Outline. Creating and Accessing Arrays. Creating and Accessing Arrays. Arrays (Savitch, Chapter 7)
Array Basics: Outline Arrays (Savitch, Chapter 7) TOPICS Array Basics Arrays in Classes and Methods Programming with Arrays Searching and Sorting Arrays Multi-Dimensional Arrays Static Variables and Constants
More informationUNIT 3 ARRAYS, RECURSION, AND COMPLEXITY CHAPTER 11 CLASSES CONTINUED
UNIT 3 ARRAYS, RECURSION, AND COMPLEXITY CHAPTER 11 CLASSES CONTINUED EXERCISE 11.1 1. static public final int DEFAULT_NUM_SCORES = 3; 2. Java allocates a separate set of memory cells in each instance
More informationCOMP1008 An overview of Polymorphism, Types, Interfaces and Generics
COMP1008 An overview of Polymorphism, Types, Interfaces and Generics Being Object-Oriented Exploiting the combination of: objects classes encapsulation inheritance dynamic binding polymorphism pluggability
More informationCSc 335 Inheritance Hell
CSc 335 Inheritance Hell Inheritance Hell refers to seemingly complex and contradictory behavior by the compiler and runtime system when resolving types and methods in an inheritance hierarchy. However,
More information