» נושאי לימוד
» נושאי לימוד
יום שני 29 באפריל 2024
applets - המשך
דף ראשי  מתחילים  מבוא ל‑applets  applets - המשך גרסה להדפסה

 

מילה על דריסת מתודות

 

על מנת להבין את קוד התוכנית של applet, דרושה הבנה מסוימת של המושג דריסת מתודות.
הנושא ידון בפירוט רב יותר בהמשך,
ועל כן ניתנת כאן רק הקדמה שתסייע לך להבין את הקוד של ה‑
applet המובא בשיעור זה.

 

ריבוי צורות בזמן ריצה 

דריסת מתודות הינה היבט של הורשה והיא גורמת לאופן התנהגות, שנוהגים לציין כריבוי צורות בזמן ריצה. (בשלב זה עליך כבר לדעת על הורשה וריבוי צורות בזמן ריצה הודות לשיעורים הראשונים בנושא תכנון מונחה-עצמים.) 

 

הורשה 

ניתן להגדיר מחלקות חדשות באמצעות הרחבת (ירושה של) מחלקות קיימות.

המחלקה החדשה תכונה לרוב תת-מחלקה, ואילו המחלקה המורחבת תכונה לרוב מחלקת-על. (קיימים גם שמות אחרים, מקצתם מובאים ומוסברים בשיעור הדן בתכנות מונחה-עצמים.)

כאשר מחלקה חדשה מרחיבה מחלקה קיימת, כל המשתנים והמתודות, החברים במחלקת-העל (והחברים גם באבות-הקדמונים של אותה מחלקת-על), הופכים לחברים בתת-המחלקה.

לדבר זה נודעת חשיבות רבה. שקול זאת לרגע כדי להבין את כל ההשלכות הנובעות מכך.

 

שינוי ההתנהגות

במצב שבו ההתנהגות המוגדרת במתודה של מחלקת-העל (או אב-קדמון שלה) אינה תואמת לאובייקטים מטיפוס חדש, שמוגדרים בתת-המחלקה, ניתן לשכתב את המתודה בתת-המחלקה כדי לגרום לה להתנהג באופן שונה ביחס לאותם אובייקטים.

גם לכך נודעת חשיבות רבה. ודא שאתה מבין מה זה אומר. אולי כדאי יהיה לחזור ולעבור על החלק הדן בדריסת מתודות בשיעור על תכנון מונחה-עצמים. השיעור הנזכר כולל תוכנית קצרה,
שממחישה את ההתנהגות הכללית של מתודות דרוסות.

 

דריסת מתודות ב‑Java

הפעולה של שכתוב מתודה בתת-מחלקה מכונה דריסת מתודה.

כל מה שדרוש לצורך דריסת מתודה ב‑Java הוא להשתמש בהצהרת מתודה זהה בתת-המחלקה, ואז לספק עבורה גוף שונה.

 

דריסת מתודות ב‑++C

מתכנתי ++C זוכרים בוודאי, שדריסת מתודות ב‑++C היא פעולה מסובכת יותר,
הדורשת בין היתר להצהיר תחילה על המתודה הדרוסה כמתודה וירטואלית.

 

 

מילה על היררכיה ב-Java

 

מחלקת Object

כל המחלקות נגזרות אוטומטית ממחלקת-על הקרויה Object או מתת-מחלקה ישירה או עקיפה של מחלקת Object.

כל המחלקות ב‑Java יוצרות פירמידה היררכית כשמחלקת Object נמצאת בראש הפירמידה.

מחלקת Object מגדירה מספר מתודות אשר מורישות וזמינות לכל תת-המחלקות הישירות

או העקיפות של מחלקת Object. באופן דומה, ספריות מחלקה סטנדרטיות ב‑Java מכילות
תת-מחלקות ישירות או עקיפות של
Object, המספקות מתודות נוספות שמורישות לתת-מחלקות חדשות אותן מגדיר המתכנת.

 

כל המחלקות הן תת-מחלקות ישירות או עקיפות של Object

כל אימת שאתה מגדיר מחלקה חדשה, היא נוצרת על-פי ברירת מחדל כתת-מחלקה של Object. אולם, לעתים תרצה לנצל את הפונקציונליות של תת-מחלקות קיימות של Object על-ידי הרחבה של אחת מהן. במקרה כזה, יהיה עליך להגדיר את המחלקה – ולכתוב את הקוד – עבור applet.

 

מתי עליך לדרוס מתודות?

לעתים תסתפק בהשארת המתודות המורשות כפי שהן, ותשתמש בהן על-פי הגדרתן הקיימת או תתעלם מהן מכל וכול. לעתים אחרות יהיה עליך לשנות את התנהגותן של כמה מתודות מורשות
על-ידי דריסתן בתוך מחלקות חדשות שיוגדרו על-ידך.

 

 

ה-  Hello world" Applet"

 

מהו applet?

על-פי ה‑Java Tutorial מאת Mary Campione & Kathy Walrath,
שנכון לזמן הכתיבה ניתן להורידו מהאתר
hppt://java.sun.com:80/books/Series/Tutorial/index.html,

"...applet של Java הינו תוכנית הדְבֵקָה באוסף של קונבנציות,
שמאפשרות לה לרוץ בתוך דפדפן תואם-
Java."

 

שלוש דרכים לביצוע applet

קיימות לפחות שתי דרכים לביצוע applet של Java
(למעשה, שלוש, תוך השקעת מאמץ נוסף מצד המתכנת).

 

AppletViewer

דרך אחת, וזוהי לרוב הדרך העדיפה לבדיקת applet, היה לבצע אותו תוך שימוש בתוכנית AppletViewer, המהווה חלק סטנדרטי ב‑JDK.

 

דפדפן בעל יכולת Java

דרך שנייה לבצע applet של Java (וזו גם הדרך שבה תוכל להפוך את ה‑applets שלך לנגישים לאחרים באתר הרשת שלך) היא לצפות בו על-ידי תוכנית דפדפן בעל יכולת Java.

בשני המקרים יהיה צורך ליצור קובץ HTML שיכיל תגים המצביעים על ה‑applet.
קבצי
HTML ידונו בקצרה בהמשך.

 

הרצת  applet באופן עצמאי

הדרך השלישית לבצע applet תהיה להריץ אותו באופן עצמאי. במקרה כזה אין צורך בקובץ HTML, אולם עדיין יש צורך במתודת ()main במחלקה השולטת של ה‑applet.

 

ה‑applet "Hello World"

להלן applet פשוט המציג "Hello World".

שים לב, שהמחלקה השולטת מרחיבה את מחלקת Applet ודורסת את המתודה paint().

החלקים השונים ב‑applet הנ"ל ידונו בהמשך שיעור זה.

תכנית applet, hello3.java

זהו applet Java היוצר פלט זהה לזה של האפליקציה בשם hello1.java, למעט העובדה שהוא רץ תחת דפדפן או ה‑AppletViewer.

 

/*Applet program hello3.java
This is a Java applet that produces the same
output as the application named hello1.java,
except this program runs under a browser or 
the Applet Viewer.
*********************************************************/

import java.applet.Applet;//see discussion on packages
import java.awt.Graphics;

public class hello3 extends Applet {
  //override the paint method
  public void paint(Graphics screen) {
    screen.drawString("Hello World",50,25);
  }
} //End hello3 class. 
//End applet

 

 

מילה על חבילות (packages )

 

 

מהי חבילה?

חבילות משמשות ב‑Java על מנת לקבץ מחלקות, בדומה לאופן שבו ++C משתמשת בספריות על מנת לקבץ פונקציות ומחלקות.

חבילות ידונו בפירוט באחד השיעורים הבאים. לעת עתה די יהיה לומר, שחבילה היא לא יותר ולא פחות מאשר ציוּן הספרייה בדיסק הקשיח שלך שמכילה קבוצה של קבצי מחלקה ואשר (ככל הנראה) קשורים ביניהם.

ייבוא מחלקות

התוכנית למעלה מכילה שתי הוראות חשובות.

חוץ מאשר מחלקות אחדות, שמיובאות אוטומטית (כגון מחלקת System) בעת ההידור של תוכנית Java, תוכניות Java מסוגלות לייבא מחלקות, או חבילות המכילות מחלקות, על מנת לגשת למחלקות במינימום של קוד.

הדרך הקשה לעשות זאת

אילו מחקנו את הספריות המיובאות בתוכנית שלמעלה, עדיין ניתן היה להדר ולהריץ את התוכנית,
אך רק בתנאי שהיו מכניסים את השינויים שניתנים למטה.

כפי שניתן לראות, הדבר מצריך הרבה יותר מאמץ הקלדה מצדך.

public class hello3 extends java.applet.Applet {
  public void paint(java.awt.Graphics screen) { 
    screen.drawString("Hello World",50,25);
  }
} //End hello3 class. 

למה להשתמש בספריות ייבוא ( import ) ?

ספריות ייבוא ( import ) הן אמצעי שנועד להקל על המתכנת ומאפשר לו להצביע על המחלקות
מבלי לספק את הנתיב המלא עבור כל מחלקה.

ייבוא חבילות

כחלופה לייבוא מחלקות בודדות, ניתן לייבא חבילות שלמות תוך שימוש בתו *,
כפי שניתן לראות למטה. שימוש כזה עלול להאט את ההידור, אך לא יפגע במהירות הריצה.

import java.applet.*;

import java.awt.*;


חבילת ברירת המחדל

כל המחלקות נמצאות בתוך חבילות, בין אם החבילה מוגדרת בעת הגדרת המחלקה,
ובין אם המחלקה נמצאת בתוך חבילת ברירת המחדל.

כל המחלקות בתוך חבילה מסוימת מסוגלות להצביע זו על זו מבלי להשתמש בנתיב מלא.

 21-12-03 / 20:41  נוצר ע"י רונית רייכמן  בתאריך 
 מבוא ל‑applets - הקודםהבא - applets - המשך 
תגובות הקוראים    תגובות  -  0
דרכונט
מהי מערכת הדרכונט?
אינך מחובר, להתחברות:
דוא"ל
ססמא
נושאי לימוד
חיפוש  |  לא פועל
משלנו  |  לא פועל
גולשים מקוונים: 4