![Page 1: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/1.jpg)
Licence Mention Informatique – L2/S4 – 2011Programmation Object
&Genie Logiciel
Burkhart WolffDépartement Informatique
![Page 2: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/2.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 2
Mise en œuvre associée
C1 - 28.1, 11:15 - 13:00, [336-109]: Compléments de Programmation Java
C2 - 4.2, 11:15 - 13:00, [336-109]: Compléments sur héritage et redéfinition: covariance/contravariance, redéfinition vs surcharge, héritage vs composition etc.
C3 - 11.2, 11:15 - 13:00, [336-109]: Déclaration et gestion des exceptions
C4 - 18.2, 11:15 - 13:00, [336-109]: Polymorphisme en Java
C5 - 4.3, 11:15 - 13:00, [336-109]: Introduction aux "Patrons de conception" (en TD principalement via des exemples stéréotypes) Introduction Genie LogicielCycle de vie du logiciel et documents associés
C6 - 11.3, 11:15 - 13:00, [336-109]: Introduction à UML
C7 - 25.3, 11:15 - 13:00, [336-109]: UML: diagramme de cas d'utilisation, diagrammes de classes, notions d'invariants.
C8 - 1.4, 11:15 - 13:00, [336-109]: Diagrammes de séquence en analyse. Notion de scenario.
C9 - 8.4., 11:15 - 13:00, [336-109]: Introduction aux machines à états.
Partiel: 18.3.2011 (á confirmer) Examen: 27.5.2011 (á confirmer)
![Page 3: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/3.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 3
Overview
Why Inheritance : Taming the Similarity on Data
Inheritance inheritance „classic“, with recursion and super. inheritance : overriding vs. hiding. inheritance : overriding vs. overloading (+ „A Note On Static Fields in Objects“)
Inheritance and Encapsulation abstract classes and abstract methods
![Page 4: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/4.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 4
Overview
Why Inheritance : Taming the Similarity on Data
Inheritance inheritance „classic“, with recursion and super. inheritance : overriding vs. hiding. inheritance : overriding vs. overloading (+ „A Note On Static Fields in Objects“)
Inheritance and Encapsulation abstract classes and abstract methods
![Page 5: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/5.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 5
Why Inheritance ?
Motivation Different kinds of objects often have a certain amount in common with each other. This is reflected by a certain number of common fields (with same type). On the other hands, objects will have data that is specific to their kind (=class)
![Page 6: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/6.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 6
Why Inheritance ?
Examples: Mountain bikes, road bikes, and tandem bikes, for example, all share the characteristics of bicycles (current speed, current pedal cadence, current gear). Yet each also defines additional features that make them different: tandem bicycles have two seats and two sets of handlebars; road bikes have drop handlebars; some mountain bikes have an additional chain ring, giving them a lower gear ratio.
Gui-elements (Widgets), Cars, Aircrafts ...
![Page 7: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/7.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 7
Why Inheritance ?
Motivation Other (old) idea (ADT 72 !): consider the operationstogether with the data they operate on !Data should be ONLY manipulated by the operationson them ( ⟹ classes are a means to
encapsulation and data abstraction)
Consequence: there must be ways to reuse general definitions of objects to special cases (this is what inheritance does
for you !) distinguishing special behaviour from general one!
![Page 8: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/8.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 8
Overview
Why Inheritance : Taming the Similarity on Data
Inheritance inheritance „classic“, with recursion and super. inheritance : overriding vs. hiding. inheritance : overriding vs. overloading (+ „A Note On Static Fields in Objects“)
Inheritance and Encapsulation abstract classes and abstract methods
![Page 9: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/9.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 9
Class Declarations (R)
Class Declarations Revisited
Syntax : class <class-name> { // field, constructor,
// and method declarations}class <class-name> extends <sup-class-name>
// field, constructor, // and method declarations}
Note: So - method declarations are always in the context of a class-declaration. Therefore, there is usually anobject to which the method refers to.(Exceptions are, eg., Systems.out.println ...)
![Page 10: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/10.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 10
Class Declarations (R)
Class Declarations Revisited
Syntax : class <class-name> { // field, constructor,
// and method declarations}class <class-name> extends <sup-class-name>
// field, <modifier><type><methodname>(<arg-list>)
{ … this … }}
Note: The method-body of a declaration inside a class may containa special parameter, called this, having the static type of the surrounding class, which refers to the “first argument”of a method call (the thing before the dot ...)
![Page 11: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/11.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 11
Overriding vs Hiding(1)
Method - calls (“invocation”) for non-constructors:
Syntax : <expr>.<methodname>(<expr-list>)
Thus: a.f(b) is in principle f(a,b)
(where a is bound to the implicit argument this)
BUT it is more than that: it's dynamic (actual) type is used to distinguish what method is actually called (late binding, dynamic binding) in case that several methods fit … due to overriding, hiding and overloading invocations.
![Page 12: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/12.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 12
Methods and „this“ (1)
Method - calls (“invocation”):For example, the Point class was written like this
public class Point { public int x = 0; public int y = 0;
//constructor public Point(int x, int y) {
this.x = x;this.y = y;
}}
![Page 13: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/13.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 13
Methods and „this“ (2)
Method - calls (“invocation”):… or shorter:
public class Point { public int x = 0; public int y = 0;
//constructor public Point(int a, int b) {
x = a;y = b;
}
}
Note: Methods having the same name as their (surrounding)class are called constructors.
![Page 14: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/14.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 14
Methods and „this“ (3)
Example: Method - calls (“invocation”):
class CL { int x = 1; CL add () {x++; return this;}
}
public class thiss { public static void main(String[] args) { CL cl = new CL(); System.out.println( cl.x ); System.out.println( cl.add().x ); // 2 System.out.println( cl.add().add().x ); // 3
}}
![Page 15: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/15.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 15
Methods and „this“ (4)
Example: Method - calls can be recursive (a bit artificial):
class CL { int x = 1; CL fac (int a) { if (a>0) x = a * fac(a-1).x;
return (this); }
}
public class thiss { public static void main(String[] args) { CL cl = new CL(); System.out.println( cl.fac(3).x ); // 6
}}
![Page 16: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/16.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 16
Using Super (1)
Example
class Parent { public Parent() {} }
class Child1 extends Parent { public Child1() { super(); } }
class Child2 extends Parent { public Child2() { super(); }
![Page 17: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/17.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 17
Using Super (2)
Example (ctd):
class Grandson extends Child2 { public Grandson() { super(); } } public class MainClass { public static void main(String[] a) { Child1 child = new Child1(); if (child instanceof Parent) { System.out.println("true"); } } }
Running this program yields what ?
![Page 18: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/18.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 18
Using Super (3)
Example (ctd):
class Grandson extends Child2 { public Grandson() { super(); }
public class MainClass { public static void main(String[] a) { Child1 child = new Child1(); if (child instanceof Parent) { System.out.println("true"); }
}
Running this program yields what ? true.
![Page 19: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/19.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 19
Overview
Why Inheritance : Taming the Similarity on Data
Inheritance inheritance „classic“, with recursion and super. inheritance : overriding vs. hiding. inheritance : overriding vs. overloading (+ „A Note On Static Fields in Objects“)
Inheritance and Encapsulation abstract classes and abstract methods
![Page 20: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/20.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 20
Overriding vs Hiding(1)
Method - declarations: Overriding.
An instance method in a subclass with the same signature (name, plus the number and the type of its parameters) and return type as an instance method in the superclass overrides the superclass's method.
![Page 21: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/21.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 21
Overriding vs Hiding(2)
Method - declarations: Hiding.
If a subclass defines a class method with the same signature as a class method in the superclass, the method in the subclass hides the one in the superclass.
Note: An instance method is a method which is associated with one object and may use the instance variables of that object. The opposite of an instance method is a static method.
The default for a method is to be an instance method.
![Page 22: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/22.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 22
Overriding vs Hiding(3)
Example: public class Animal { public static void testClassMethod() { System.out.println("CM Animal."); } public void testInstanceMethod() { System.out.println("IM Animal."); } }
![Page 23: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/23.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 23
Overriding vs Hiding(4)
Example:
public class Cat extends Animal { public static void testClassMethod() { System.out.println("CM Cat."); } public void testInstanceMethod() { System.out.println("IM Cat."); }
...}
![Page 24: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/24.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 24
Overriding vs Hiding(5)
Example:
public class Cat extends Animal { ...
public static void main(String[] args) { Cat myCat = new Cat(); Animal myAnimal = myCat; Animal.testClassMethod(); Cat.testClassMethod(); myCat.testInstanceMethod(); myAnimal.testInstanceMethod(); }}
![Page 25: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/25.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 25
Overriding vs Hiding(6)
Example:
public class Cat extends Animal { ...
public static void main(String[] args) { Cat myCat = new Cat(); Animal myAnimal = myCat; Animal.testClassMethod(); ??? Cat.testClassMethod(); ??? myCat.testInstanceMethod(); ??? myAnimal.testInstanceMethod(); ??? }}
![Page 26: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/26.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 26
Overriding vs Hiding(7)
Example:
public class Cat extends Animal { ...
public static void main(String[] args) { Cat myCat = new Cat(); Animal myAnimal = myCat; Animal.testClassMethod(); “CM Animal” Cat.testClassMethod(); “CM Cat” myCat.testInstanceMethod(); “IM Cat” myAnimal.testInstanceMethod(); “IM Cat” }}
![Page 27: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/27.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 27
Overriding vs Hiding(8)
All objects inherit from class Object the methods
toString() : string representation of object hasCode() : representation of an object by a (hash) key
(different when copying due to internal unique id)
clone() : copy of an objet equals() : test of equality of two objects
Inheritage, Overriding, Hiding and Overloading enable a flixible way to adapt this „Object-Infrastructure“ to ones needs ...
![Page 28: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/28.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 28
Overriding vs Hiding(9)
Practical example: Overriding .equal !
Problem: a == b
is the referential equality, i.e.it is a test if two references (adresses in the memory)
Solution : override .equals !!! (similarly: override toString)
![Page 29: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/29.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 29
Overriding vs Hiding(10)
Solution : override .equals !!! (similarly: override toString) public boolean equals(Object o) allows for problem-specific comparisons. Default : reference equality Overriding can allows to compare values of a class In principle can compare objects of different types In practice: always casting along the following scheme:
public boolean equals(Object o) { if (!(o instanceof MonObjet)) { return false;} MonObjet mo = (MonObjet) o; // comparaison }G.
![Page 30: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/30.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 30
Overriding vs Hiding(11)
Example:
public class MyString { private String s; public MyString(String s) { this.s = s; }
public static void main(String[] a) { MyString s1 = new MyString("bonjour"); MyString s2 = new MyString("bonjour"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); }}
) affiche deux fois false
G.G.
![Page 31: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/31.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 31
Overriding vs Hiding(12)
Example:
public class MyString1 { private String s; public MyString1(String s) { this.s = s; }
public boolean equals(Object o) { if (!(o instanceof MyString1)){return false;} MyString1 mo = (MyString1) o; return mo.s.equals(this.s); }
...
![Page 32: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/32.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 32
Overriding vs Hiding(13)
Example (ctd):
... public static void main(String[] a) { MyString1 s1 = new MyString1("bonjour"); MyString1 s2 = new MyString1("bonjour"); System.out.println(s1.equals(s2)); } }
![Page 33: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/33.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 33
Overview
Why Inheritance : Taming the Similarity on Data
Inheritance inheritance „classic“, with recursion and super. inheritance : overriding vs. hiding. inheritance : overriding vs. overloading (+ „A Note On Static Fields in Objects“)
Inheritance and Encapsulation abstract classes and abstract methods
![Page 34: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/34.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 34
Overriding vs Overloading (1)
Method - declarations: Overriding.
An instance method in a subclass with the same signature (name, plus the number and the type of its parameters) and return type as an instance method in the superclass overrides the superclass's method.
![Page 35: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/35.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 35
Overriding vs Overloading (2)
Method - declarations: Overloading.
An instance method in a subclass with same name but different signature (plus the number and the type of its parameters) and return type as an instancemethod in the superclass overrides the superclass'smethod.
![Page 36: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/36.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 36
Overriding vs Overloading (3)
Method - declarations: Overloading.
Already observed form of overloading:
s + i (where s::string and i::int) i + s
Another application is an equality between different types (but a finite, fixed number of signatures …)
s.equal(i) etc ...
![Page 37: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/37.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 37
Overriding vs Overloading (4)
Example
public class Rectangle { private int x, y; private int width, height;
public Rectangle() { this(0, 0, 0, 0); } public Rectangle(int width, int height) { this(0, 0, width, height); } public Rectangle(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } ...}
![Page 38: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/38.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 38
A Note On Static Fields in Objects
Until now, all fields (“attributes”) in class declarations were dynamic, i.e. when calling a constructor, an object is created with its own fields in the memory.
Now, we introduce global variables that all instances have in common: class <class-name> [extends <sup-class-name>] . . .
<modifier> static <type><var> [= <expr>]. . .}
![Page 39: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/39.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 39
A Note On Static Fields in Objects
Example: . . .
public class Etudiant { public static int n; public int id; private String nom;
public Etudiant(String nom) { this.nom = nom; this.id = n; Etudiant.n += 1; }
![Page 40: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/40.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 40
A Note On Static Fields in Objects
Example:
. . .
public static void main(String[] n) { Etudiant e1 = new Etudiant("1"); Etudiant e2 = new Etudiant("2"); Etudiant e3 = new Etudiant("3"); System.out.println(e2.n); System.out.println(e2.id); }}
![Page 41: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/41.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 41
A Note On Static Fields in Objects
Example:
. . .
public static void main(String[] n) { Etudiant e1 = new Etudiant("1"); Etudiant e2 = new Etudiant("2"); Etudiant e3 = new Etudiant("3"); System.out.println(e2.n); ? ? ? System.out.println(e2.id); ? ? ? }}
![Page 42: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/42.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 42
Overview
Why Inheritance : Taming the Similarity on Data
Inheritance inheritance „classic“, with recursion and super. inheritance : overriding vs. hiding. inheritance : overriding vs. overloading (+ „A Note On Static Fields in Objects“)
Inheritance and Encapsulation abstract classes and abstract methods
![Page 43: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/43.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 43
Abstract Classes & Methods
Inheritance & Encapsulation:
Abstract Classes are a kind of Interface, that can be partially implemented. It can contain :
field declarations method declarations abstract method declarations (just a signature that
has to be overridden
later . . .
![Page 44: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/44.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 44
Abstract Classes & Methods
Syntax:
abstract class <class-name> [extends<sup-class-name>]{
// field declarations . . . // non-abstract method declarations
<modifier> abstract <type><method>(<args>) ;
. . .
}
![Page 45: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/45.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 45
Abstract Classes & Methods
Example:
public abstract class GraphicObject { // . . .
abstract void draw();
}
Now, in each of the subclasses Rectangle, Line, … the method draw has to be overridden in order to form a COMPLETE implementation.
![Page 46: Licence Mention Informatique – L2/S4 – 2011 Programmation ...wolff/teach-material/2011-12/L2-POnGL/PO... · Licence Mention Informatique – L2/S4 – 2011 Programmation Object](https://reader031.vdocuments.pub/reader031/viewer/2022030411/5a9df28d7f8b9a0d5a8e3813/html5/thumbnails/46.jpg)
2011 B. Wolff, L2-PO&GL, Inheritance etc 46
Overview
Why Inheritance : Taming the Similarity on Data ✔
Inheritance
inheritance „classic“, with recursion and super. ✔
inheritance : overriding vs. hiding. ✔
inheritance : overriding vs. overloading ✔ (+ „A Note On Static Fields in Objects“)
Inheritance and Encapsulation
abstract classes and abstract methods ✔