ממשקים בג'אווה

benda2109

New member
ממשקים בג'אווה

שלום, יש לי כמה שאלות בהנה וכמה שאלות טכניות אני אשמח אם תוכלו להסביר לי ולעזור הבנה ממשק הוא קובץ שנרשם כמו קלאס- רק ללא שדות, ללא בנאים, ובשיטות שלו מופיעות רק כותרות ולא מימושן. אני יכול להגדיר שמחלקות אחרות יממשו את הממשק ובהן אממש את השיטות שרשומות ב"חוזה" של הממשק. עכשיו- אני למה זה טוב? ז"א זה רק בקטע שלהצהיר על תכונה שתהיה משותפת לכמה מחלקות? אני מבין שיש ממשקים שמורים כבר באג'ווה- comparator ו comparable. מה ההבדל בינהם? טכנית יש לי משימה- לכתוב 3 מחלקות 1. מחלקה של מרובעים 2. מחלקה שנקראת "מיין מרובעים לפי היקף" שממשת את המממשק comparator 3. מחלקה שנקראת "מיין מרובעים לפי שטח" שממשת את המממשק comparator במחלקה של המרובעים אני צריך למיין מרובעים לפי היקף ולפי שטח איך טכנית אני אקרא מהמחלקה מס' 1 למחלקות 2,3 ? תודה מראש,
 

benda2109

New member
סינטקס בג'אווה

חוקי לרשום
sum+= x; sum*= x;​
במקום
sum= sum + x; sum= sum * x;​
ניתן להגביל משתנה מסוים שיקבל רק שני ערכים? בנאי בסופו של דבר אמור לאתחל את כל השדות? אם בשדה אני רושם int n = 2; זה אומר שזה הערך היחידי שהוא יקבל בתוכנית? תודה מראש,
 

egozi13

New member
בקצרה

ממשק (interface) משמש לשם הסתרת המימוש משאר העולם - על מנת לזכות ב "כימוס" (encapsulation), וזאת על מנת להשיג צמידות נמוכה והדיקות גבוהה של הקוד , וזאת על מנת שהקוד יהיה יותר עמיד לשינויים, וזאת על מנת שהקוד יהיה יותר בר-תחזוקה (maintainable) לגבי ההבדל בין הממשקים שציינת: אני המון זמן לא עסקתי ב java, אז אוכל רק לנחש לפי השמות שלהם: Comperator יכול להשוות בין שני Comparable לגבי המימוש שלך: לדעתי הכוונה היא שקוד לקוח (קרי מחלקה חיצונית) יוכל ליצור רשימה של "מרובעים", (מחלקה 1) ואז בעזרת מחלקות 2 ו 3 יוכל למיין את הרשימה
 

benda2109

New member
אני בטוח

שזה המימוש הנכון אני רק לא מבין איך מבצעים אותו איך קוראים לשיטה של מחלקה B מתוך מחלקה A ?
 

egozi13

New member
אני מנחש כאן כי אני לו זוכר jdk בעל פה

ולמעשה, אני לא זוכר את הסינטקס של ג'אוה כמו שצריך, אבל מקווה שתבין אותי בכל זאת |קוד| public interface SomeService { int doSomethingWith(int something); } public class SomeServiceImpl implements SomeService { public int doSomethingWith(int something) { return something + 1; } } public class ClientCode { public void useService() { SomeService service = new SomeServiceImpl(); int product = service.doSomethingWith(2); } }
 
למעלה