SlideShare a Scribd company logo
1 of 4
Download to read offline
‫ממשקים‬-Interfaces
‫בעלות‬ ‫מתודות‬ ‫של‬ ‫מירושה‬ ‫כתוצאה‬ ‫וקונפליקטים‬ ‫בעיות‬ ‫עוד‬ ‫לא‬ .‫המרובה‬ ‫ההורשה‬ ‫לנושא‬ ‫ג'אווה‬ ‫של‬ ‫הפתרון‬ ‫הוא‬ ‫ממשק‬
.‫עבותה‬ ‫מחלקות‬ ‫היררכיית‬ ‫עם‬ ‫מיותרת‬ ‫התעסקות‬ ‫עוד‬ ‫לא‬ .‫שונות‬ ‫ממחלקות‬ ‫שונים‬ ‫ומימושים‬ ‫זהים‬ ‫שמות‬
‫מיותר‬ ‫לרשת‬ ‫ניתן‬ ‫לא‬ ‫אמנם‬.‫ממשקים‬ ‫של‬ ‫מוגבל‬ ‫בלתי‬ '‫מס‬ ‫ליישם‬ ‫ניתן‬ ‫בהחלט‬ ‫אך‬ ,‫אחת‬ ‫ממחלקה‬
:‫הבאים‬ ‫החוקים‬ ‫בה‬ ‫שמתקיימים‬ ‫מחלקה‬ ‫כזו‬ ,‫למחלקה‬ ‫ממשק‬ ‫לדמות‬ ‫ניתן‬
‫כ‬ ‫מוגדרת‬ ‫להיות‬ ‫חייבת‬ ‫שלה‬ ‫מהמתודות‬ ‫ואחת‬ ‫אחת‬ ‫כל‬-public abstract
‫כ‬ ‫מוגדר‬ ‫להיות‬ ‫חייב‬ ‫שלה‬ ‫מהמשתנים‬ ‫ואחד‬ ‫אחד‬ ‫כל‬-static final
‫הוא‬ ‫הרעיון‬‫במחלקות‬ ‫ממומשים‬ ‫לראות‬ ‫שנרצה‬ )‫הגדרתן‬ ‫(שאת‬ ‫מתודות‬ ‫ועל‬ )‫נוכחותם‬ ‫(שאת‬ ‫משתנים‬ ‫על‬ ‫בממשק‬ ‫להצהיר‬
.‫שהוגדרו‬ ‫בחוקים‬ ‫הממשק‬ ‫מאפייני‬ ‫יעמדו‬ ,‫הנ"ל‬ ‫השמורות‬ ‫במילים‬ ‫שימוש‬ ‫נעשה‬ ‫לא‬ ‫אם‬ ‫גם‬ .‫הממשק‬ ‫אותו‬ ‫את‬ ‫יישמו‬ ‫אשר‬
‫מ‬ ‫זוהי‬ ‫שממשק‬ ‫הרי‬ ,‫אובייקטים‬ ‫נוצרים‬ ‫ממנה‬ "‫ל"שבלונה‬ ‫מחלקה‬ ‫דימינו‬ ‫אם‬‫תכונות‬ ‫של‬ ‫יותר‬ ‫עוד‬ ‫כללית‬ ‫שבלונה‬ ‫הגדרת‬ ‫עין‬
.‫הממשק‬ ‫אותו‬ ‫את‬ ‫מיישמת‬ ‫שהיא‬ ‫תצהיר‬ ‫שהיא‬ ‫כך‬ ‫ע"י‬ ‫אליה‬ "‫"לאמץ‬ ‫יכולה‬ ‫מחלקה‬ ‫שכל‬ ,‫כזו‬ ,‫מחלקה‬ ‫ופעולות‬
‫לחבילה‬ ‫להשתייך‬ ‫יכול‬ ‫ממשק‬ .‫אחרים‬ ‫ממשקים‬ ‫של‬ ‫הגדרתם‬ ‫את‬ ‫להרחיב‬ ‫יכול‬ ‫וממשק‬ ,‫מממשק‬ ‫אובייקט‬ ‫ליצור‬ ‫ניתן‬ ‫לא‬
‫היררכיית‬ ‫של‬ ‫והחוקיות‬‫כאן‬ ‫גם‬ ‫עובדת‬ ‫במחלקות‬ ‫שראינו‬ ‫התיקיות‬–‫בקובץ‬ ‫ישמר‬ ‫ממשק‬ ‫קובץ‬ ,‫כלומר‬ ,‫הידור‬ ‫מבחינת‬ ‫גם‬
‫סיומת‬ ‫עם‬java‫סיומת‬ ‫עם‬ ‫לקובץ‬ ‫ויהודר‬class.‫משתייך‬ ‫הוא‬ ‫אליה‬ ‫לחבילה‬ ‫בהתאם‬ ‫התיקיות‬ ‫היררכיית‬ ‫בתוך‬ ‫שישמר‬
‫מוצהרו‬ ‫אשר‬ ‫הפעולות‬ ‫אותן‬ ‫כל‬ ‫את‬ ‫לממש‬ ‫החובה‬ ‫עליה‬ ‫חלה‬ ,‫ממשק‬ ‫מממשת‬ ‫שמחלקה‬ ‫ברגע‬‫מנת‬ ‫על‬ ‫הממשק‬ ‫באותו‬ ‫ת‬
‫אבסטרקטית‬ ‫מתודה‬ ‫לפחות‬ ‫תכיל‬ ‫היא‬ ,‫המתודות‬ ‫כל‬ ‫את‬ ‫תממש‬ ‫לא‬ ‫היא‬ ‫באם‬ .‫הזו‬ ‫מהמחלקה‬ ‫אובייקט‬ ‫לייצר‬ ‫יהיה‬ ‫שניתן‬
‫ע"י‬ ‫המממשת‬ ‫המחלקה‬ ‫של‬ ‫ההגדרה‬ ‫בשורת‬ ‫זאת‬ ‫לציין‬ ‫יש‬ ‫כך‬ ‫ובשל‬ ‫לאבסטרקטית‬ ‫כולה‬ ‫המחלקה‬ ‫את‬ ‫שהופך‬ ‫מה‬ ,‫אחת‬
‫השמורה‬ ‫המילה‬ ‫הוספת‬abstract.
‫שהמ‬ ‫לב‬ ‫נשים‬.‫מחדש‬ ‫והגדרה‬ ‫לדריסה‬ ‫ניתנים‬ ‫או‬ ,)‫הסופי‬ ‫המשתנה‬ ‫(ערכי‬ ‫שהם‬ ‫כפי‬ ‫לשימוש‬ ‫ניתנים‬ ‫שתנים‬
‫במילה‬ ‫שימוש‬ ‫תוך‬ ,‫מחלקה‬ ‫שמוגדרת‬ ‫כשם‬ ‫תתבצע‬ ‫הממשק‬ ‫הגדרת‬interface‫המילה‬ ‫במקום‬class:
public interface InterfaceName {
static final varType varName1=value;
static final varType varName2=value;
public abstract returnType methodName1();
public abstract returnType methodName2();
}
:‫הבא‬ ‫באופן‬ ‫יתבצע‬ ‫מחלקה‬ ‫ע"י‬ ‫הממשק‬ ‫אותו‬ ‫של‬ ‫ומימוש‬
public class ClassName implements InterfaceName {
varType varName1;
varType final varName2=value;// ‫ניתן‬‫בממשק‬ ‫מהגדרתו‬ ‫ערכו‬ ‫את‬ ‫נקבל‬ .‫אותו‬ ‫להגדיר‬ ‫מבלי‬ ‫זה‬ ‫למשתנה‬ ‫לפנות‬
public returnType methodName1() {
}
public returnType methodName2() {
}
}
.‫בממשק‬ ‫שהופיעו‬ ‫והמשתנים‬ ‫המתודות‬ ‫של‬ ‫דריסה‬ ‫מבצעים‬ ‫בעצם‬ ‫אנו‬ ,‫הממשק‬ ‫את‬ ‫מממשים‬ ‫אנו‬ ‫שכאשר‬ ‫נבחין‬
‫הגדרנו‬ ‫עתה‬ ‫עד‬overriding.‫הנדרס‬ ‫לחתימת‬ ‫זהה‬ ‫תהיה‬ ‫הדורס‬ ‫שחתימת‬ ‫כתנאי‬ ‫שחייבנו‬ ‫כך‬
,‫מאותחלים‬ ‫סופיים‬ ‫משתנים‬ ‫להציב‬ ‫עלינו‬ ‫יש‬ ‫הממשק‬ ‫שבהגדרת‬ ‫לב‬ ‫נשים‬ ,‫מעט‬ ‫משתנה‬ ‫הזו‬ ‫החוקיות‬ ‫ממשק‬ ‫של‬ ‫במימוש‬
‫חייבות‬ ‫ולא‬ ‫מימוש‬ ‫להכיל‬ ‫יכולות‬ ‫מתודות‬ ,‫כן‬ ‫כמו‬ .‫עוד‬ ‫סופיים‬ ‫להיות‬ ‫חייבים‬ ‫אינם‬ ‫המשתנים‬ ‫המממשת‬ ‫במחלקה‬ ‫בעוד‬
‫ל‬.‫אבסטרקטיות‬ ‫הישאר‬
:‫המימוש‬ ‫על‬ ‫אז‬ ‫ורק‬ ‫הירושה‬ ‫על‬ ‫יוצהר‬ ‫קודם‬ ,‫אחרת‬ ‫ממחלקה‬ ‫יורשת‬ ‫גם‬ ,‫המממשת‬ ‫המחלקה‬ ‫אותה‬ ‫אם‬
public class ClassName1 extends ClassName2 implements InterfaceName {
}
:‫כך‬ ‫תיראה‬ ‫ההגדרה‬ ,‫אחד‬ ‫ממשק‬ ‫יותר‬ ‫מממשת‬ ‫המחלקה‬ ‫אותה‬ ‫אם‬
public class ClassName implements InterfaceName1, InterfaceName2, …, InterfaceNameN {
}
:‫אחר‬ ‫ממשק‬ ‫של‬ ‫הגדרתו‬ ‫את‬ ‫להרחיב‬ ‫יכול‬ ‫ממשק‬ ,‫כאמור‬
public interface ExtendingInterface extends InterfaceName {
}
:‫מרובים‬ ‫ממשקים‬ ‫של‬ ‫הגדרתם‬ ‫את‬ ‫להרחיב‬ ‫ממשק‬ ‫יכול‬ ,‫כן‬ ‫כמו‬
public interface ExtendingInterface extends InterfaceName1, InterfaceName2… {
}
‫להגדיר‬ ‫ניתן‬ :‫לדוגמה‬ ,‫טיפוס‬ ‫כאל‬ ‫תהיה‬ ‫לממשק‬ ‫ההתייחסות‬ ‫שכל‬ ,‫ומכאן‬ ‫חדש‬ ‫טיפוס‬ ‫של‬ ‫הגדרה‬ ‫מהווה‬ ‫הממשק‬ ‫הגדרת‬
.‫הממשק‬ ‫מסוג‬ ‫פרמטרים‬ ‫לקבל‬ ‫וניתן‬ ‫הממשק‬ ‫מטיפוס‬ ‫חזרה‬ ‫ערך‬ ‫להחזיר‬ ‫ניתן‬ ,‫ממשק‬ ‫מטיפוס‬ ‫משתנה‬
‫דרך‬ ‫גישה‬ ‫כאשר‬ ,‫הממשק‬ ‫אותו‬ ‫את‬ ‫שמיישמת‬ ‫ממחלקה‬ ‫שנוצר‬ ‫לאובייקט‬ ‫ברפרנס‬ ‫להחזיק‬ ‫יכול‬ ‫ממשק‬ ‫מטיפוס‬ ‫משתנה‬
.‫המיישמת‬ ‫במחלקה‬ ‫שהוגדרו‬ ‫לכאלו‬ ‫ולא‬ ‫בממשק‬ ‫שהוגדרו‬ ‫ופעולות‬ ‫תכונות‬ ‫כלפי‬ ‫רק‬ ‫תאפשר‬ ‫זה‬ ‫משתנה‬
‫הו‬ ‫אם‬ ‫גם‬ ,‫בו‬ ‫שמוגדרים‬ ‫המאפיינים‬ ‫את‬ ‫רק‬ "‫"לראות‬ ‫מסוגל‬ ‫ממשק‬ ‫מסוג‬ ‫משתנה‬ ,‫כלומר‬‫לאובייקט‬ ‫ברפרנס‬ ‫מחזיק‬ ‫א‬
.‫יותר‬ "‫"משוכלל‬
‫נבצע‬ ‫באם‬ ‫ורק‬ ,‫להכיל‬ ‫העתיד‬ ‫למשתנה‬ ‫המוכל‬ ‫האובייקט‬ ‫של‬ ‫הרפרנס‬ ‫טיפוס‬ ‫בין‬ ‫התאמה‬ ‫ויש‬ ‫במידה‬ ‫רק‬ ‫אפשרי‬ ‫ההיפך‬
‫המרת‬casting‫את‬ ‫שמממשת‬ ‫מחלקה‬ ‫מסוג‬ ‫משתנה‬ ‫בתוך‬ ‫ממשק‬ ‫מסוג‬ ‫לאובייקט‬ ‫רפרנס‬ ‫להציב‬ ‫נרצה‬ ‫אם‬ ,‫כלומר‬ ,‫מתאימה‬
‫חייבים‬ ‫נהיה‬ ,‫הממשק‬‫שהמשתנה‬ ‫ובלבד‬ ‫המממשת‬ ‫המחלקה‬ ‫לסוג‬ ‫ממשק‬ ‫מסוג‬ ‫האובייקט‬ ‫של‬ ‫הרפרנס‬ ‫של‬ ‫המרה‬ ‫לבצע‬
‫לגבי‬ ‫וכמובן‬ ‫מורישה‬ ‫ממחלקה‬ ‫שיורשת‬ ‫מחלקה‬ ‫לגבי‬ ‫כנ"ל‬ .‫מממשת‬ ‫מחלקה‬ ‫מסוג‬ ‫לאובייקט‬ ‫ברפרנס‬ ‫מחזיר‬ ‫ממשק‬ ‫מסוג‬
.‫אליו‬ ‫הרפרנס‬ ‫את‬ ‫רק‬ ‫אלא‬ ,‫האובייקט‬ ‫את‬ ‫משנה‬ ‫לא‬ ‫כמובן‬ ‫ההמרה‬ .‫המחלקה‬ ‫מאותה‬ ‫טיפוס‬
‫ל‬ ‫ניתן‬‫השמורה‬ ‫המילה‬ ‫באמצעות‬ ‫זו‬ ‫התאמה‬ ‫בדוק‬instanceof.
:‫נסביר‬
‫השמורה‬ ‫במילה‬ ‫להשתמש‬ ‫ניתן‬ ,‫מסוים‬ ‫ממשק‬ ‫שמיישמת‬ ‫ממחלקה‬ ‫נוצר‬ ‫אובייקט‬ ‫אם‬ ‫לדעת‬ ‫ע"מ‬instanceof:‫הבא‬ ‫באופן‬
if(objectRef instanceof InterfaceName) ==true if it is
==false if it's not
‫מרגע‬‫באופן‬ ‫זאת‬ ‫נעשה‬ .‫מחלקות‬ ‫של‬ ‫תכונות‬ ‫לסימון‬ "‫סימון‬ ‫"ממשק‬ ‫יצירת‬ ‫על‬ ‫לדבר‬ ‫גם‬ ‫נכון‬ ,‫בפנינו‬ ‫פרושה‬ ‫זו‬ ‫שאינדיקציה‬
:‫הבא‬
interface CanDoOperation {
public abstract doOperation();
}
:‫בפנינו‬ ‫הניצבות‬ ‫אפשרויות‬ ‫שתי‬ ‫נציין‬ ,‫כך‬ ‫ומתוך‬
‫ב‬ ‫להשתמש‬ ‫נוכל‬-instanceof‫באוביי‬ ‫לטפל‬ ‫ע"מ‬‫מסוימת‬ ‫בדרך‬ ‫מסוימים‬ ‫קטים‬
‫כלשהי‬ ‫תכונה‬ ‫בעלת‬ ‫היא‬ ‫שמחלקה‬ ‫לסמן‬ ‫יהיה‬ ‫תפקידו‬ ‫שכל‬ ‫ריק‬ ‫ממשק‬ ‫להגדיר‬ ‫נוכל‬
‫בהם‬ ‫למקרים‬ ‫הולם‬ ‫טיפול‬ ‫לתת‬ ,‫כלומר‬ ,‫ריצה‬ ‫בזמן‬ ‫חריגים‬ ‫של‬ ‫זריקה‬ ‫למנוע‬ ‫ע"מ‬ ‫זה‬ ‫במידע‬ ‫להשתמש‬ ‫נוכל‬instanceof
‫אז‬ ‫(שהרי‬ ‫שקר‬ ‫ערך‬ ‫יחזיר‬casting‫ערך‬ ‫יחזיר‬ ‫בהם‬ ‫למקרים‬ ‫הולם‬ ‫טיפול‬ ‫ולתת‬ )‫למשל‬ ‫חוקי‬ ‫יהיה‬ ‫לא‬true‫את‬ ‫לבצע‬ ‫(ניתן‬
.)‫ההמרה‬

More Related Content

What's hot

ZIO Schedule: Conquering Flakiness & Recurrence with Pure Functional Programming
ZIO Schedule: Conquering Flakiness & Recurrence with Pure Functional ProgrammingZIO Schedule: Conquering Flakiness & Recurrence with Pure Functional Programming
ZIO Schedule: Conquering Flakiness & Recurrence with Pure Functional ProgrammingJohn De Goes
 
08. handling file streams
08. handling file streams08. handling file streams
08. handling file streamsHaresh Jaiswal
 
Java oops and fundamentals
Java oops and fundamentalsJava oops and fundamentals
Java oops and fundamentalsjavaease
 
OCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference CardOCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference CardHari kiran G
 
Command Design Pattern
Command Design PatternCommand Design Pattern
Command Design PatternShahriar Hyder
 
Spring framework Controllers and Annotations
Spring framework   Controllers and AnnotationsSpring framework   Controllers and Annotations
Spring framework Controllers and AnnotationsAnuj Singh Rajput
 
OCA Java SE 8 Exam Chapter 1 Java Building Blocks
OCA Java SE 8 Exam Chapter 1 Java Building BlocksOCA Java SE 8 Exam Chapter 1 Java Building Blocks
OCA Java SE 8 Exam Chapter 1 Java Building Blocksİbrahim Kürce
 
Introduction to class in java
Introduction to class in javaIntroduction to class in java
Introduction to class in javakamal kotecha
 
Visitor design pattern
Visitor design patternVisitor design pattern
Visitor design patternSalem-Kabbani
 
POP vs OOP Introduction
POP vs OOP IntroductionPOP vs OOP Introduction
POP vs OOP IntroductionHashni T
 
C++ Function
C++ FunctionC++ Function
C++ FunctionHajar
 
Introduction To Angular's reactive forms
Introduction To Angular's reactive formsIntroduction To Angular's reactive forms
Introduction To Angular's reactive formsNir Kaufman
 

What's hot (20)

React
ReactReact
React
 
Object oriented programming in python
Object oriented programming in pythonObject oriented programming in python
Object oriented programming in python
 
ZIO Schedule: Conquering Flakiness & Recurrence with Pure Functional Programming
ZIO Schedule: Conquering Flakiness & Recurrence with Pure Functional ProgrammingZIO Schedule: Conquering Flakiness & Recurrence with Pure Functional Programming
ZIO Schedule: Conquering Flakiness & Recurrence with Pure Functional Programming
 
08. handling file streams
08. handling file streams08. handling file streams
08. handling file streams
 
OOP and FP
OOP and FPOOP and FP
OOP and FP
 
Java oops and fundamentals
Java oops and fundamentalsJava oops and fundamentals
Java oops and fundamentals
 
OCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference CardOCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference Card
 
Command Design Pattern
Command Design PatternCommand Design Pattern
Command Design Pattern
 
Spring framework Controllers and Annotations
Spring framework   Controllers and AnnotationsSpring framework   Controllers and Annotations
Spring framework Controllers and Annotations
 
Java interface
Java interfaceJava interface
Java interface
 
OOPs in Java
OOPs in JavaOOPs in Java
OOPs in Java
 
OCA Java SE 8 Exam Chapter 1 Java Building Blocks
OCA Java SE 8 Exam Chapter 1 Java Building BlocksOCA Java SE 8 Exam Chapter 1 Java Building Blocks
OCA Java SE 8 Exam Chapter 1 Java Building Blocks
 
Introduction to class in java
Introduction to class in javaIntroduction to class in java
Introduction to class in java
 
Input output streams
Input output streamsInput output streams
Input output streams
 
Type conversion
Type  conversionType  conversion
Type conversion
 
Visitor design pattern
Visitor design patternVisitor design pattern
Visitor design pattern
 
POP vs OOP Introduction
POP vs OOP IntroductionPOP vs OOP Introduction
POP vs OOP Introduction
 
C++ Function
C++ FunctionC++ Function
C++ Function
 
Introduction To Angular's reactive forms
Introduction To Angular's reactive formsIntroduction To Angular's reactive forms
Introduction To Angular's reactive forms
 
1z0-808-certification-questions-sample
1z0-808-certification-questions-sample1z0-808-certification-questions-sample
1z0-808-certification-questions-sample
 

More from מורן אלקובי

ג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיותג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיותמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשהג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשהמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטיםג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטיםמורן אלקובי
 
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפהג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפהמורן אלקובי
 
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםSQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםמורן אלקובי
 
SQL - מודל ישויות קשרים
SQL - מודל ישויות קשריםSQL - מודל ישויות קשרים
SQL - מודל ישויות קשריםמורן אלקובי
 
בדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtualבדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtualמורן אלקובי
 
בדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציותבדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציותמורן אלקובי
 
הורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקותהורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקותמורן אלקובי
 
תכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקותתכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקותמורן אלקובי
 
כלים מתמטיים - הוכחות משפטים
כלים מתמטיים - הוכחות משפטיםכלים מתמטיים - הוכחות משפטים
כלים מתמטיים - הוכחות משפטיםמורן אלקובי
 
עבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סיעבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סימורן אלקובי
 
מצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשבמצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשבמורן אלקובי
 
מצגת לוגיקה מלאה חלק 3 מתוך 3
מצגת לוגיקה מלאה חלק 3 מתוך 3מצגת לוגיקה מלאה חלק 3 מתוך 3
מצגת לוגיקה מלאה חלק 3 מתוך 3מורן אלקובי
 

More from מורן אלקובי (20)

ג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיותג'אווה - תכנות מונחה עצמים - רב צורתיות
ג'אווה - תכנות מונחה עצמים - רב צורתיות
 
ג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשהג'אווה - תכנות מונחה עצמים - הורשה
ג'אווה - תכנות מונחה עצמים - הורשה
 
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטיםג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
ג'אווה - תכנות מונחה עצמים - מחלקות ואובייקטים
 
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפהג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
ג'אווה - תכנות מונחה עצמים - מצייני גישה/רמות חשיפה
 
MySQL - מילון השאילתא
MySQL - מילון השאילתאMySQL - מילון השאילתא
MySQL - מילון השאילתא
 
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתוניםSQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתונים
 
SQL - מודל הנתונים
SQL - מודל הנתוניםSQL - מודל הנתונים
SQL - מודל הנתונים
 
SQL - אלגברה של יחסים
SQL - אלגברה של יחסיםSQL - אלגברה של יחסים
SQL - אלגברה של יחסים
 
SQL - מודל ישויות קשרים
SQL - מודל ישויות קשריםSQL - מודל ישויות קשרים
SQL - מודל ישויות קשרים
 
MySQL - מרכיבי השאילתא
MySQL - מרכיבי השאילתאMySQL - מרכיבי השאילתא
MySQL - מרכיבי השאילתא
 
בדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtualבדרך לפולימורפיזם - Using Virtual/Pure Virtual
בדרך לפולימורפיזם - Using Virtual/Pure Virtual
 
בדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציותבדרך לפולימורפיזם - העמסת ועקיפת פונקציות
בדרך לפולימורפיזם - העמסת ועקיפת פונקציות
 
הורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקותהורשה והיררכיה של מחלקות
הורשה והיררכיה של מחלקות
 
תכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקותתכנות מונחה עצמים - מחלקות
תכנות מונחה עצמים - מחלקות
 
טורי חזקה
טורי חזקהטורי חזקה
טורי חזקה
 
כלים מתמטיים - הוכחות משפטים
כלים מתמטיים - הוכחות משפטיםכלים מתמטיים - הוכחות משפטים
כלים מתמטיים - הוכחות משפטים
 
DLL מדריך לעבודה עם
DLL מדריך לעבודה עםDLL מדריך לעבודה עם
DLL מדריך לעבודה עם
 
עבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סיעבודה עם קבצים בשפת סי
עבודה עם קבצים בשפת סי
 
מצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשבמצגת בלוגיקה למדעי המחשב
מצגת בלוגיקה למדעי המחשב
 
מצגת לוגיקה מלאה חלק 3 מתוך 3
מצגת לוגיקה מלאה חלק 3 מתוך 3מצגת לוגיקה מלאה חלק 3 מתוך 3
מצגת לוגיקה מלאה חלק 3 מתוך 3
 

ג'אווה - תכנות מונחה עצמים - ממשקים

  • 1.
  • 2. ‫ממשקים‬-Interfaces ‫בעלות‬ ‫מתודות‬ ‫של‬ ‫מירושה‬ ‫כתוצאה‬ ‫וקונפליקטים‬ ‫בעיות‬ ‫עוד‬ ‫לא‬ .‫המרובה‬ ‫ההורשה‬ ‫לנושא‬ ‫ג'אווה‬ ‫של‬ ‫הפתרון‬ ‫הוא‬ ‫ממשק‬ .‫עבותה‬ ‫מחלקות‬ ‫היררכיית‬ ‫עם‬ ‫מיותרת‬ ‫התעסקות‬ ‫עוד‬ ‫לא‬ .‫שונות‬ ‫ממחלקות‬ ‫שונים‬ ‫ומימושים‬ ‫זהים‬ ‫שמות‬ ‫מיותר‬ ‫לרשת‬ ‫ניתן‬ ‫לא‬ ‫אמנם‬.‫ממשקים‬ ‫של‬ ‫מוגבל‬ ‫בלתי‬ '‫מס‬ ‫ליישם‬ ‫ניתן‬ ‫בהחלט‬ ‫אך‬ ,‫אחת‬ ‫ממחלקה‬ :‫הבאים‬ ‫החוקים‬ ‫בה‬ ‫שמתקיימים‬ ‫מחלקה‬ ‫כזו‬ ,‫למחלקה‬ ‫ממשק‬ ‫לדמות‬ ‫ניתן‬ ‫כ‬ ‫מוגדרת‬ ‫להיות‬ ‫חייבת‬ ‫שלה‬ ‫מהמתודות‬ ‫ואחת‬ ‫אחת‬ ‫כל‬-public abstract ‫כ‬ ‫מוגדר‬ ‫להיות‬ ‫חייב‬ ‫שלה‬ ‫מהמשתנים‬ ‫ואחד‬ ‫אחד‬ ‫כל‬-static final ‫הוא‬ ‫הרעיון‬‫במחלקות‬ ‫ממומשים‬ ‫לראות‬ ‫שנרצה‬ )‫הגדרתן‬ ‫(שאת‬ ‫מתודות‬ ‫ועל‬ )‫נוכחותם‬ ‫(שאת‬ ‫משתנים‬ ‫על‬ ‫בממשק‬ ‫להצהיר‬ .‫שהוגדרו‬ ‫בחוקים‬ ‫הממשק‬ ‫מאפייני‬ ‫יעמדו‬ ,‫הנ"ל‬ ‫השמורות‬ ‫במילים‬ ‫שימוש‬ ‫נעשה‬ ‫לא‬ ‫אם‬ ‫גם‬ .‫הממשק‬ ‫אותו‬ ‫את‬ ‫יישמו‬ ‫אשר‬ ‫מ‬ ‫זוהי‬ ‫שממשק‬ ‫הרי‬ ,‫אובייקטים‬ ‫נוצרים‬ ‫ממנה‬ "‫ל"שבלונה‬ ‫מחלקה‬ ‫דימינו‬ ‫אם‬‫תכונות‬ ‫של‬ ‫יותר‬ ‫עוד‬ ‫כללית‬ ‫שבלונה‬ ‫הגדרת‬ ‫עין‬ .‫הממשק‬ ‫אותו‬ ‫את‬ ‫מיישמת‬ ‫שהיא‬ ‫תצהיר‬ ‫שהיא‬ ‫כך‬ ‫ע"י‬ ‫אליה‬ "‫"לאמץ‬ ‫יכולה‬ ‫מחלקה‬ ‫שכל‬ ,‫כזו‬ ,‫מחלקה‬ ‫ופעולות‬ ‫לחבילה‬ ‫להשתייך‬ ‫יכול‬ ‫ממשק‬ .‫אחרים‬ ‫ממשקים‬ ‫של‬ ‫הגדרתם‬ ‫את‬ ‫להרחיב‬ ‫יכול‬ ‫וממשק‬ ,‫מממשק‬ ‫אובייקט‬ ‫ליצור‬ ‫ניתן‬ ‫לא‬ ‫היררכיית‬ ‫של‬ ‫והחוקיות‬‫כאן‬ ‫גם‬ ‫עובדת‬ ‫במחלקות‬ ‫שראינו‬ ‫התיקיות‬–‫בקובץ‬ ‫ישמר‬ ‫ממשק‬ ‫קובץ‬ ,‫כלומר‬ ,‫הידור‬ ‫מבחינת‬ ‫גם‬ ‫סיומת‬ ‫עם‬java‫סיומת‬ ‫עם‬ ‫לקובץ‬ ‫ויהודר‬class.‫משתייך‬ ‫הוא‬ ‫אליה‬ ‫לחבילה‬ ‫בהתאם‬ ‫התיקיות‬ ‫היררכיית‬ ‫בתוך‬ ‫שישמר‬ ‫מוצהרו‬ ‫אשר‬ ‫הפעולות‬ ‫אותן‬ ‫כל‬ ‫את‬ ‫לממש‬ ‫החובה‬ ‫עליה‬ ‫חלה‬ ,‫ממשק‬ ‫מממשת‬ ‫שמחלקה‬ ‫ברגע‬‫מנת‬ ‫על‬ ‫הממשק‬ ‫באותו‬ ‫ת‬ ‫אבסטרקטית‬ ‫מתודה‬ ‫לפחות‬ ‫תכיל‬ ‫היא‬ ,‫המתודות‬ ‫כל‬ ‫את‬ ‫תממש‬ ‫לא‬ ‫היא‬ ‫באם‬ .‫הזו‬ ‫מהמחלקה‬ ‫אובייקט‬ ‫לייצר‬ ‫יהיה‬ ‫שניתן‬ ‫ע"י‬ ‫המממשת‬ ‫המחלקה‬ ‫של‬ ‫ההגדרה‬ ‫בשורת‬ ‫זאת‬ ‫לציין‬ ‫יש‬ ‫כך‬ ‫ובשל‬ ‫לאבסטרקטית‬ ‫כולה‬ ‫המחלקה‬ ‫את‬ ‫שהופך‬ ‫מה‬ ,‫אחת‬ ‫השמורה‬ ‫המילה‬ ‫הוספת‬abstract. ‫שהמ‬ ‫לב‬ ‫נשים‬.‫מחדש‬ ‫והגדרה‬ ‫לדריסה‬ ‫ניתנים‬ ‫או‬ ,)‫הסופי‬ ‫המשתנה‬ ‫(ערכי‬ ‫שהם‬ ‫כפי‬ ‫לשימוש‬ ‫ניתנים‬ ‫שתנים‬ ‫במילה‬ ‫שימוש‬ ‫תוך‬ ,‫מחלקה‬ ‫שמוגדרת‬ ‫כשם‬ ‫תתבצע‬ ‫הממשק‬ ‫הגדרת‬interface‫המילה‬ ‫במקום‬class: public interface InterfaceName { static final varType varName1=value; static final varType varName2=value; public abstract returnType methodName1(); public abstract returnType methodName2(); } :‫הבא‬ ‫באופן‬ ‫יתבצע‬ ‫מחלקה‬ ‫ע"י‬ ‫הממשק‬ ‫אותו‬ ‫של‬ ‫ומימוש‬ public class ClassName implements InterfaceName { varType varName1; varType final varName2=value;// ‫ניתן‬‫בממשק‬ ‫מהגדרתו‬ ‫ערכו‬ ‫את‬ ‫נקבל‬ .‫אותו‬ ‫להגדיר‬ ‫מבלי‬ ‫זה‬ ‫למשתנה‬ ‫לפנות‬ public returnType methodName1() { } public returnType methodName2() { } }
  • 3. .‫בממשק‬ ‫שהופיעו‬ ‫והמשתנים‬ ‫המתודות‬ ‫של‬ ‫דריסה‬ ‫מבצעים‬ ‫בעצם‬ ‫אנו‬ ,‫הממשק‬ ‫את‬ ‫מממשים‬ ‫אנו‬ ‫שכאשר‬ ‫נבחין‬ ‫הגדרנו‬ ‫עתה‬ ‫עד‬overriding.‫הנדרס‬ ‫לחתימת‬ ‫זהה‬ ‫תהיה‬ ‫הדורס‬ ‫שחתימת‬ ‫כתנאי‬ ‫שחייבנו‬ ‫כך‬ ,‫מאותחלים‬ ‫סופיים‬ ‫משתנים‬ ‫להציב‬ ‫עלינו‬ ‫יש‬ ‫הממשק‬ ‫שבהגדרת‬ ‫לב‬ ‫נשים‬ ,‫מעט‬ ‫משתנה‬ ‫הזו‬ ‫החוקיות‬ ‫ממשק‬ ‫של‬ ‫במימוש‬ ‫חייבות‬ ‫ולא‬ ‫מימוש‬ ‫להכיל‬ ‫יכולות‬ ‫מתודות‬ ,‫כן‬ ‫כמו‬ .‫עוד‬ ‫סופיים‬ ‫להיות‬ ‫חייבים‬ ‫אינם‬ ‫המשתנים‬ ‫המממשת‬ ‫במחלקה‬ ‫בעוד‬ ‫ל‬.‫אבסטרקטיות‬ ‫הישאר‬ :‫המימוש‬ ‫על‬ ‫אז‬ ‫ורק‬ ‫הירושה‬ ‫על‬ ‫יוצהר‬ ‫קודם‬ ,‫אחרת‬ ‫ממחלקה‬ ‫יורשת‬ ‫גם‬ ,‫המממשת‬ ‫המחלקה‬ ‫אותה‬ ‫אם‬ public class ClassName1 extends ClassName2 implements InterfaceName { } :‫כך‬ ‫תיראה‬ ‫ההגדרה‬ ,‫אחד‬ ‫ממשק‬ ‫יותר‬ ‫מממשת‬ ‫המחלקה‬ ‫אותה‬ ‫אם‬ public class ClassName implements InterfaceName1, InterfaceName2, …, InterfaceNameN { } :‫אחר‬ ‫ממשק‬ ‫של‬ ‫הגדרתו‬ ‫את‬ ‫להרחיב‬ ‫יכול‬ ‫ממשק‬ ,‫כאמור‬ public interface ExtendingInterface extends InterfaceName { } :‫מרובים‬ ‫ממשקים‬ ‫של‬ ‫הגדרתם‬ ‫את‬ ‫להרחיב‬ ‫ממשק‬ ‫יכול‬ ,‫כן‬ ‫כמו‬ public interface ExtendingInterface extends InterfaceName1, InterfaceName2… { } ‫להגדיר‬ ‫ניתן‬ :‫לדוגמה‬ ,‫טיפוס‬ ‫כאל‬ ‫תהיה‬ ‫לממשק‬ ‫ההתייחסות‬ ‫שכל‬ ,‫ומכאן‬ ‫חדש‬ ‫טיפוס‬ ‫של‬ ‫הגדרה‬ ‫מהווה‬ ‫הממשק‬ ‫הגדרת‬ .‫הממשק‬ ‫מסוג‬ ‫פרמטרים‬ ‫לקבל‬ ‫וניתן‬ ‫הממשק‬ ‫מטיפוס‬ ‫חזרה‬ ‫ערך‬ ‫להחזיר‬ ‫ניתן‬ ,‫ממשק‬ ‫מטיפוס‬ ‫משתנה‬ ‫דרך‬ ‫גישה‬ ‫כאשר‬ ,‫הממשק‬ ‫אותו‬ ‫את‬ ‫שמיישמת‬ ‫ממחלקה‬ ‫שנוצר‬ ‫לאובייקט‬ ‫ברפרנס‬ ‫להחזיק‬ ‫יכול‬ ‫ממשק‬ ‫מטיפוס‬ ‫משתנה‬ .‫המיישמת‬ ‫במחלקה‬ ‫שהוגדרו‬ ‫לכאלו‬ ‫ולא‬ ‫בממשק‬ ‫שהוגדרו‬ ‫ופעולות‬ ‫תכונות‬ ‫כלפי‬ ‫רק‬ ‫תאפשר‬ ‫זה‬ ‫משתנה‬ ‫הו‬ ‫אם‬ ‫גם‬ ,‫בו‬ ‫שמוגדרים‬ ‫המאפיינים‬ ‫את‬ ‫רק‬ "‫"לראות‬ ‫מסוגל‬ ‫ממשק‬ ‫מסוג‬ ‫משתנה‬ ,‫כלומר‬‫לאובייקט‬ ‫ברפרנס‬ ‫מחזיק‬ ‫א‬ .‫יותר‬ "‫"משוכלל‬ ‫נבצע‬ ‫באם‬ ‫ורק‬ ,‫להכיל‬ ‫העתיד‬ ‫למשתנה‬ ‫המוכל‬ ‫האובייקט‬ ‫של‬ ‫הרפרנס‬ ‫טיפוס‬ ‫בין‬ ‫התאמה‬ ‫ויש‬ ‫במידה‬ ‫רק‬ ‫אפשרי‬ ‫ההיפך‬ ‫המרת‬casting‫את‬ ‫שמממשת‬ ‫מחלקה‬ ‫מסוג‬ ‫משתנה‬ ‫בתוך‬ ‫ממשק‬ ‫מסוג‬ ‫לאובייקט‬ ‫רפרנס‬ ‫להציב‬ ‫נרצה‬ ‫אם‬ ,‫כלומר‬ ,‫מתאימה‬ ‫חייבים‬ ‫נהיה‬ ,‫הממשק‬‫שהמשתנה‬ ‫ובלבד‬ ‫המממשת‬ ‫המחלקה‬ ‫לסוג‬ ‫ממשק‬ ‫מסוג‬ ‫האובייקט‬ ‫של‬ ‫הרפרנס‬ ‫של‬ ‫המרה‬ ‫לבצע‬ ‫לגבי‬ ‫וכמובן‬ ‫מורישה‬ ‫ממחלקה‬ ‫שיורשת‬ ‫מחלקה‬ ‫לגבי‬ ‫כנ"ל‬ .‫מממשת‬ ‫מחלקה‬ ‫מסוג‬ ‫לאובייקט‬ ‫ברפרנס‬ ‫מחזיר‬ ‫ממשק‬ ‫מסוג‬ .‫אליו‬ ‫הרפרנס‬ ‫את‬ ‫רק‬ ‫אלא‬ ,‫האובייקט‬ ‫את‬ ‫משנה‬ ‫לא‬ ‫כמובן‬ ‫ההמרה‬ .‫המחלקה‬ ‫מאותה‬ ‫טיפוס‬ ‫ל‬ ‫ניתן‬‫השמורה‬ ‫המילה‬ ‫באמצעות‬ ‫זו‬ ‫התאמה‬ ‫בדוק‬instanceof.
  • 4. :‫נסביר‬ ‫השמורה‬ ‫במילה‬ ‫להשתמש‬ ‫ניתן‬ ,‫מסוים‬ ‫ממשק‬ ‫שמיישמת‬ ‫ממחלקה‬ ‫נוצר‬ ‫אובייקט‬ ‫אם‬ ‫לדעת‬ ‫ע"מ‬instanceof:‫הבא‬ ‫באופן‬ if(objectRef instanceof InterfaceName) ==true if it is ==false if it's not ‫מרגע‬‫באופן‬ ‫זאת‬ ‫נעשה‬ .‫מחלקות‬ ‫של‬ ‫תכונות‬ ‫לסימון‬ "‫סימון‬ ‫"ממשק‬ ‫יצירת‬ ‫על‬ ‫לדבר‬ ‫גם‬ ‫נכון‬ ,‫בפנינו‬ ‫פרושה‬ ‫זו‬ ‫שאינדיקציה‬ :‫הבא‬ interface CanDoOperation { public abstract doOperation(); } :‫בפנינו‬ ‫הניצבות‬ ‫אפשרויות‬ ‫שתי‬ ‫נציין‬ ,‫כך‬ ‫ומתוך‬ ‫ב‬ ‫להשתמש‬ ‫נוכל‬-instanceof‫באוביי‬ ‫לטפל‬ ‫ע"מ‬‫מסוימת‬ ‫בדרך‬ ‫מסוימים‬ ‫קטים‬ ‫כלשהי‬ ‫תכונה‬ ‫בעלת‬ ‫היא‬ ‫שמחלקה‬ ‫לסמן‬ ‫יהיה‬ ‫תפקידו‬ ‫שכל‬ ‫ריק‬ ‫ממשק‬ ‫להגדיר‬ ‫נוכל‬ ‫בהם‬ ‫למקרים‬ ‫הולם‬ ‫טיפול‬ ‫לתת‬ ,‫כלומר‬ ,‫ריצה‬ ‫בזמן‬ ‫חריגים‬ ‫של‬ ‫זריקה‬ ‫למנוע‬ ‫ע"מ‬ ‫זה‬ ‫במידע‬ ‫להשתמש‬ ‫נוכל‬instanceof ‫אז‬ ‫(שהרי‬ ‫שקר‬ ‫ערך‬ ‫יחזיר‬casting‫ערך‬ ‫יחזיר‬ ‫בהם‬ ‫למקרים‬ ‫הולם‬ ‫טיפול‬ ‫ולתת‬ )‫למשל‬ ‫חוקי‬ ‫יהיה‬ ‫לא‬true‫את‬ ‫לבצע‬ ‫(ניתן‬ .)‫ההמרה‬