1 תוכנה 1 תרגול 14 – סיכום. 2 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public.

Slides:



Advertisements
Similar presentations
תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
Advertisements

בתרגול הקודם הורשה: –ניתן להרחיב רק מחלקה אחת –כל מה שלא private – עובר בהורשה –המילה השמורה super –יצירת היררכיה –Object היא שורש ההיררכיה –דריסה אופרטור.
INHERITANCE BASICS Reusability is achieved by INHERITANCE
Problem Solving 5 Using Java API for Searching and Sorting Applications ICS-201 Introduction to Computing II Semester 071.
INTERFACES IN JAVA 1.Java Does not support Multiple Inheritance directly. Multiple inheritance can be achieved in java by the use of interfaces. 2.We need.
METHOD OVERRIDING Sub class can override the methods defined by the super class. Overridden Methods in the sub classes should have same name, same signature.
METHOD OVERRIDING 1.Sub class can override the methods defined by the super class. 2.Overridden Methods in the sub classes should have same name, same.
Constructors And Instantiation. Constructor Basics Every class must have a constructor Even abstract classes!! No return types Their names must exactly.
Final Review.
Exam Example Questions
Polymorphism. Legal assignments Widening is legal Narrowing is illegal (unless you cast) class Test { public static void main(String args[]) { double.
March 2004Object Oriented Design1 Object-Oriented Design.
Interfaces. Lecture Objectives To learn about interfaces To be able to convert between class and interface references To appreciate how interfaces can.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved L13 (Chapter 21) Generics.
1 More on Inheritance Overview l Object: The father of all classes l Casting and Classes l Object Cloning l Importance of Cloning.
Java Generics. 2 The Dark Ages: Before Java 5 Java relied only on inclusion polymorphism  A polymorphism code = Using a common superclass Every class.
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
Generics OOP Tirgul What is it good for ? Stack myStack = new Stack() ; // old version (1.4.2) myStack.push(new Integer(0)) ; int x = ((Integer)
Exam Objective : Legal return types PRESENTED BY : SRINIVAS VG.
26-Jun-15 Polymorphism. 2 Legal assignments Widening is legal Narrowing is illegal (unless you cast) class Test { public static void main(String args[])
1 תוכנה 1 ג ' אווה תרגול י " ג – סיכום הסיכומים ליאור שפירא ומתי שמרת.
Abstract Classes b b An abstract class is a placeholder in a class hierarchy that represents a generic concept b b An abstract class cannot be instantiated.
OOP in Java Fawzi Emad Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
Java CourseWinter 2009/10. Introduction Object oriented, imperative programming language. Developed: Inspired by C++ programming language.
CMSC 202 Interfaces. 11/20102 Classes and Methods When a class defines its methods as public, it describes how the class user interacts with the method.
Java Programming Robert Chatley William Lee
“is a”  Define a new class DerivedClass which extends BaseClass class BaseClass { // class contents } class DerivedClass : BaseClass { // class.
220 FINAL TEST REVIEW SESSION Omar Abdelwahab. INHERITANCE AND POLYMORPHISM Suppose you have a class FunClass with public methods show, tell, and smile.
Week 1 - Friday.  What did we talk about last time?  Basic programming model  Other Java stuff  References  Static  Inner classes  Exceptions.
Inheritance. Introduction Inheritance is one of the cornerstones of object-oriented programming because it allows the creation of hierarchical classifications.
Sun Certified Java Programmer, ©2004 Gary Lance, Chapter 5, page 1 Sun Certified Java 1.4 Programmer Chapter 5 Notes Gary Lance
Java 5 Part 1 CSE301 University of Sunderland Harry Erwin, PhD.
Consider the following Which of the following will cause a java.lang.ClassCastException? a)Alpha a = x; b)Foo f= (Delta)x; c)Foo f= (Alpha)x; d)Beta b.
Java Generics Compiled from Core Java Technologies Tech Tips By Billy B. L. Lim.
Inheritance (Part 4) Polymorphism and Abstract Classes 1.
JAVA COURSE 1 Computer Engineering Association. Compile your first program Public class Hello{ public class Hello(){ System.out.println(“Hello”); } puclic.
Inheritance Dr. Andrew Wallace PhD BEng(hons) EurIng
Lecture 21 - Abstract Classes and Interface. Example Figure –Rectangle –Triangle Figure –Dimensions –Area.
CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)
Interfaces and Polymorphism CS 162 (Summer 2009).
Access Specifier. Anything declared public can be accessed from anywhere. Anything declared private cannot be seen outside of its class. When a member.
עקרונות תכנות מונחה עצמים תרגול 10: Generics. Outline  Generic classes  Generics & Inheritance  Wild Cards  Case study: Generic Graph.
Advanced Programming Practice Questions Advanced Programming. All slides copyright: Chetan Arora.
 It is a pure oops language and a high level language.  It was developed at sun microsystems by James Gosling.
OOP Tirgul 12.
Modern Programming Tools And Techniques-I
Interface.
Methods Attributes Method Modifiers ‘static’
Abstract Class, Interface, Package
Accessing Files in Java
תוכנה 1 תרגול 13 – סיכום.
תוכנה 1 תרגול 13 – סיכום.
null, true, and false are also reserved.
CMSC 202 Interfaces.
Java Programming Language
Introduction to Java Programming
מבוא לתכנות בWINDOWS ב#C
תוכנה 1 תרגול 13 – סיכום.
תוכנה 1 תרגול 13 – סיכום.
Object-Oriented Programming
CS18000: Problem Solving and Object-Oriented Programming
Inheritance Inheritance is a fundamental Object Oriented concept
مظفر بگ محمدی دانشگاه ایلام
class PrintOnetoTen { public static void main(String args[]) {
CMSC 202 Interfaces.
Sampath Kumar S Assistant Professor, SECE
Topics OOP Review Inheritance Review Abstract Classes
CMSC 202 Interfaces.
INTERFACES Explained By: Sarbjit Kaur. Lecturer, Department of Computer Application, PGG.C.G., Sector: 42, Chandigarh.
Presentation transcript:

1 תוכנה 1 תרגול 14 – סיכום

2 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public abstract int foo1(int i); int foo2(int i); } The “type” of foo1 and foo2 is the same.

3 מנשקים public interface Foo { public void bar() throws Exception; } public class FooImpl implements Foo { public void bar() { System.out.println("No exception is thrown"); } public static void main(String args[]) { Foo foo = new FooImpl(); foo.bar(); } האם הקוד מתקמפל? אם לא, למה? אם כן, האם יש שגיאת ריצה? אם יש, למה? אחרת, מה הפלט? שגיאת קומפילציה: "Unhandled exception type Exception"

4 מנשקים - המשך public interface Foo { public void bar() throws Exception; } public class FooImpl implements Foo { public void bar() { System.out.println("No exception is thrown"); } public static void main(String args[]) { FooImpl foo = new FooImpl(); foo.bar(); } האם הקוד מתקמפל? אם לא, למה? אם כן, האם יש שגיאת ריצה? אם יש, למה? אחרת, מה הפלט? פלט: "No exception is thrown"

5 מנשקים וירושה Consider the following class hierarchy: Interface Animal {…} class Dog implements Animal{…} class Poodle extends Dog {…} class Labrador extends Dog {…} Which of the following lines (if any) will not compile? Poodle poodle = new Poodle(); Animal animal = (Animal) poodle; Dog dog = new Labrador(); animal = dog; poodle = dog; poodle = (Poodle) dog; -No compilation error -Runtime Exception Animal Dog LabradorPoodle - Compilation Error Type mismatch: cannot convert from Dog to Poodle Labrador labrador = (Labrador) dog; -No compilation error -No Runtime Exception

6 מנשקים וירושה class A { public void print() { System.out.println("A"); } class B extends A implements C { } interface C { void print(); } אין שגיאות קומפילציה האם יש שגיאה? public כברירת מחדל

7 מנשקים וירושה class A { void print() { System.out.println("A"); } class B extends A implements C { } interface C { void print(); } שגיאת קומפילציה: The inherited package method A.print() cannot hide the public abstract method in C האם יש שגיאה?

8 דריסה והעמסה של שירותים public class A { public float foo(float a, float b) throws IOException { } public class B extends A { … } אילו מהשירותים הבאים ניתן להגדיר ב- B? 1. float foo(float a, float b){…} 2. public int foo(int a, int b) throws Exception{…} 3. public float foo(float a, float b) throws Exception{…} 4. public float foo(float p, float q) {…}

9 דריסה של שירותים public class A { public void print() { System.out.println("A"); } public class B extends A { public void print() { System.out.println("B"); } public class C { public static void main(String[] args){ B b = new B(); A a = b; b.print(); a.print(); } האם הקוד מתקמפל? אם לא, למה? אם כן, האם יש שגיאת ריצה? אם יש, למה? אחרת, מה הפלט? הפלט: B אין צורך ב- casting

10 דריסה של שירותים וניראות public class A { public void print() { System.out.println("A"); } public class B extends A { protected void print() { System.out.println("B"); } public class C { public static void main(String[] args) { B b = new B(); b.print(); } שגיאת קומפילציה: "Cannot reduce the visibility of the inherited method from A" האם הקוד מתקמפל? אם לא, למה? אם כן, האם יש שגיאת ריצה? אם יש, למה? אחרת, מה הפלט?

11 דריסה של שירותים וניראות (2) public class A { protected void print() { System.out.println("A"); } public class B extends A { public void print() { System.out.println("B"); } public class C { public static void main(String[] args) { B b = new B(); b.print(); } הפלט: B האם הקוד מתקמפל? אם לא, למה? אם כן, האם יש שגיאת ריצה? אם יש, למה? אחרת, מה הפלט?

12 הורשה public class A { public void foo() { System.out.println("A.foo()"); } public void bar() { System.out.println("A.bar()"); foo(); } public class B extends A { public void foo() { System.out.println("B.foo()"); } public static void main(String[] args) { A a = new B(); a.bar(); } הפלט: A.bar() B.foo() האם הקוד מתקמפל? אם לא, למה? אם כן, האם יש שגיאת ריצה? אם יש, למה? אחרת, מה הפלט?

13 הורשה (2) public class A { private void foo() { System.out.println("A.foo()"); } public void bar() { System.out.println("A.bar()"); foo(); } public class B extends A { public void foo() { System.out.println("B.foo()"); } public static void main(String[] args) { A a = new B(); a.bar(); } הפלט: A.bar() A.foo() האם הקוד מתקמפל? אם לא, למה? אם כן, האם יש שגיאת ריצה? אם יש, למה? אחרת, מה הפלט?

14 הורשה ודריסת שירותים public class A { public void foo() {…} } public class B extends A { public void foo() {…} } האם אפשר לקרוא ל-foo של A מתוך B? תשובה: דרך super.foo()

15 הורשה ודריסת שירותים (2) public class A { public void foo() {…} } public class B extends A { public void foo() {…} } public class C extends B { public void foo() {…} } האם אפשר לקרוא ל-foo של A מתוך C? תשובה: אי אפשר, super.super.foo() - לא חוקי

16 הורשה ובנאים public class A { String bar = "A.bar"; A() { foo(); } public void foo() { System.out.println("A.foo(): bar = " + bar); } public class B extends A { String bar = "B.bar"; B() { foo(); } public void foo() { System.out.println("B.foo(): bar = " + bar); } public class C { public static void main(String[] args) { A a = new B(); System.out.println("a.bar = " + a.bar); a.foo(); } What is the output? הפלט: B.foo(): bar = null B.foo(): bar = B.bar a.bar = A.bar B.foo(): bar = B.bar

17 הורשה ובנאים (2) public class A { protected B b = new B(); public A() { System.out.println("in A: no args."); } public A(String s) { System.out.println("in A: s = " + s); } } public class B { public B() { System.out.println("in B: no args."); } } public class C extends A { protected B b; public C() { System.out.println("in C: no args."); } public C(String s) { System.out.println("in C: s = " + s); } } public class D { public static void main(String args[]) { C c = new C(); A a = new C(); } What is the output? הפלט: in B: no args. in A: no args. in C: no args. in B: no args. in A: no args. in C: no args.

18 הורשה ובנאים (3) public class A { protected B b = new B(); public A() { System.out.println("in A: no args."); } public A(String s) { System.out.println("in A: s = " + s); } } public class B { public B() { System.out.println("in B: no args."); } } public class C extends A { protected B b; public C() { System.out.println("in C: no args."); } public C(String s) { System.out.println("in C: s = " + s); } } public class D { public static void main(String args[]) { C c = new C("c"); A a = new C(“a"); } What is the output? הפלט: in B: no args. in A: no args. in C: s = c in B: no args. in A: no args. in C: s = a

19 תשובה: כולם חוץ מ-d מחלקות פנימיות public class Test { public int a = 0; private int b = 1; public void foo(final int c) { int d = 2; class InnerTest { private void bar(int e) { } אילו משתנים מ- a-e נגישים מהשורה המסומנת?

20 בחינה באופק ! הבחינה ב כל הנושאים שכיסינו במהלך הסמסטר (שיעורים, תרגולים ועבודות בית) Java, DBC, ירושה ופולימורפיזם, iterator, IO, Generics, מחלקות פנימיות, Collection Framework,... לפתור כמה שיותר מבחנים משנים שעברו לא כל הסמסטרים זהים מבחינת חומר