COMP2511
23T3 Week 8
Monday 11AM - 2PM (M11B)
Wednesday 12PM -3PM (W12A)
Slides by Alvin Cherk (z5311001)
This week
- Generic programming
- Singleton pattern
Please let me know if you want to assignment-iii individually, if you don't you will default into your assignment-ii pairs
Admin
No lab marking in week 10.
Means that all labs must be marked in week 9.
There will be a sample exam with the exam environment in week 10. I highly encourage you to attend if you want to be familiar with the exam layout and exam environment.
Assignment-i marks have been released. Check teams for more info.
TLDR; Mark on give, feedback on GitLab issue.
If you have any queries about your feedback or mark, or want more feedback about your design, ask me in the lab or send me an email.
Generic Programming
Generic Programming
What are generics?
Generics enable types to be passed when defining classes, interfaces or methods
- Remove casting and offer stronger type checks at compile time
- Allow implementations of generic algorithms, that work on a collection of different types
- Adds stability to code by making more of your bugs detectable at run-time
Generic Programming
/**
* How many different types of T here?
*
* It's all about the scope
*/
public class ConfusingClass<T> {
private T t1;
public <T> T t2(T t) {
return null;
}
public static <T> T t3(T t) {
return null;
}
public static void main(String[] args) {
ConfusingClass<String> cc = new ConfusingClass<String>();
cc.t2(3);
}
}
Example from Webster
Generic Programming
class ConfusingClass<T1> {
private T1 t1;
// private T2 t2; // nope
// private T3 t3; // nope
public <T2> T2 t2(T2 t) {
T1 t1;
T2 t2;
// T3 t3; // nope
return null;
}
// ConfusingClass.t3(...)
public static <T3> T3 t3(T3 t) {
// T1 t1; // nope
// T2 t2; // nope
T3 t3;
return null;
}
}
Example from Webster
Code Demo
Stack.java
Code Demo
Inside src/stack
, there are a series of stubs for a Stack
class which takes in a generic type. There are a series of tests inside StackTest.java
which currently fail.
Implement the methods so that the tests pass, using an ArrayList
to store the internal data structure. Answer the following questions:
- What is
E
?- A generic type
- What is the
Iterable
interface? Why does it have anE
as well? What methods does it force us to implement?- Iterable: Something that can be iterated over
- Forces us to implement the
.iterator()
method
Code Demo
-
When completing
toArrayList
, why do we need to make a copy rather then just returning our internalArrayList
?-
Don't want to break encapsulation
-
- What does the
.iterator()
method allow us to do? Look atStackTest.java
- Allows us to loop through it like a normal collection in a standardized way
Code Demo
public static Integer sumStack(Stack<? extends Integer> stack);
- What does the
<? extends Type>
and<? super Type>
mean?-
extends
: the parameterized type must be a class or subclass of the given type -
super
: the parameterised type must be a class or super class of the given type
-
- What is the difference between
?
andE
?-
?
can't be referred to as a type (Type erasure) -
E
can
-
Singleton Pattern
Singleton Pattern
What type of pattern?
Creational pattern
The singleton pattern ensures that a class has only one instance. It provides a global access point to this instance.
It helps avoid initialisation overhead when only 1 copy of an instance is needed.
Code Demo
Heist.java
Code Demo
Admin
No lab marking in week 10.
Means that all labs must be marked in week 9.
There will be a sample exam with the exam environment in week 10. I highly encourage you to attend if you want to be familiar with the exam layout and exam environment.
Assignment-i marks have been released. Check teams for more info.
TLDR; Mark on give, feedback on GitLab issue.
If you have any queries about your feedback or mark, or want more feedback about your design, ask me in the lab or send me an email.
COMP2511 Week 8 23T3
By kuroson
COMP2511 Week 8 23T3
- 113