äøöàä 4 - ò÷øåðåú á OO

Download Report

Transcript äøöàä 4 - ò÷øåðåú á OO

‫ניתוח ועיצוב מערכות מידע‬
‫תעשיה וניהול‪ ,‬שנה ב‬
‫סמסטר אביב ‪2009‬‬
‫קורס ‪310211‬‬
‫הרצאה ‪:4‬‬
‫אפיון מערכות מוכוון עצמים‬
‫ד"ר דיצה ביימל‬
‫‪Email: [email protected]‬‬
‫‪1‬‬
‫‪Spring 2005‬‬
‫‪Specification and Analysis of Information Systems‬‬
‫סיכום השיעורים הקודמים‬
‫• שלב הניתוח כולל‪:‬‬
‫– שלב הייזום‪,‬‬
‫– איסוף נתונים וחקר מצב קיים‪,‬‬
‫– הגדרת דרישות וחקר ישימות‪.‬‬
‫• ‪EPC‬‬
‫– מודל המשמש לניתוח ותיעוד מצב קיים‪.‬‬
‫‪2‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫סילבוס על פני ציר הזמן‬
‫מבוא‬
‫‪UML‬‬
‫עקרונות‬
‫ב ‪OO‬‬
‫‪OPM‬‬
‫‪14‬‬
‫‪3‬‬
‫‪13‬‬
‫‪12‬‬
‫‪11‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪10‬‬
‫‪9‬‬
‫‪8‬‬
‫‪7‬‬
‫‪6‬‬
‫‪5‬‬
‫שלב הניתוח‬
‫‪4‬‬
‫‪3‬‬
‫‪2‬‬
‫‪1‬‬
‫תוכן ההרצאה‬
‫• מבוא ל ‪UML‬‬
‫• אפיון מונחה עצמים‬
‫– מושגים בסיסיים‬
‫– עקרונות בסיסיים‬
‫– קשרים‬
‫• סיכום‬
‫‪4‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫מוטיבציה‬
‫דוח מבקר המדינה לשנת ‪– 2001‬‬
‫‪ 13%‬מכלל פרויקטי התוכנה מסתיימים בהצלחה‬
‫בעיות בפיתוח מערכות‪:‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪5‬‬
‫אין מספיק שימוש חוזר בקוד‬
‫מציאת בגים‬
‫ריבוי שיטות סימון‬
‫המערכות גדלות ונעשות מורכבות‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫ניתוח מוכוון עצמים‬
‫• גישת האובייקטים עוסקת ישירות בעולם האמיתי‪.‬‬
‫• מהו אובייקט?‬
‫• עולמו של הלקוח בנוי מאובייקטים‬
‫– חלקם פיזיים ‪ -‬כמו‪..‬‬
‫– חלקם לוגיים ‪ -‬כמו‪...‬‬
‫• פיתוח מ"מ בגישה מונחית עצמים‪ :‬זיהוי וארגון המחלקות לפי‬
‫מושגי עולם הבעיה ולא לפי מושגי עולם המימוש‬
‫• בשנת ‪ 1983‬הוכרזה שפת התכנות ‪. c++‬‬
‫• בשנת ‪ 1997‬יצאה הגרסה הראשונה של ‪-UML‬‬
‫‪Unified Modeling Language‬‬
‫לא עוד תהליכים!‬
‫אמור מעתה עצמים או אובייקטים‬
‫‪6‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪UML‬‬
‫‪ UML‬היא שפת מודל שבאמצעותה נוכל לאפיין ולעצב‬
‫מערכות במתודולוגיה מוכוונת עצמים בצורה אחידה‬
‫המקובלת בעולם היום‪.‬‬
‫‪7‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫מטרות ‪UML‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪8‬‬
‫אחידות‬
‫מסגרת‬
‫פשוט ופרקטי‬
‫מחזור חיי מערכת‬
‫פרויקטים בסדר גודל ענק‬
‫חוסר תלות בטכנולוגיה‬
‫שפה המתאימה לכולם‬
‫הפרדה בין שלבי פיתוח המערכת‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
UML ‫מרכיבי‬
1.
2.
3.
4.
5.
6.
7.
8.
9.
Use case diagram
Class diagram
Sequence Diagram
Collaboration diagram
State chart diagram
Activity diagram
Deployment diagram
Component diagram
Object diagram
TOTAL 9 DIAGRAMS
2009 ,‫ניתוח ואפיון מערכות מידע‬
9
‫תוכן ההרצאה‬
‫• מבוא ל ‪UML‬‬
‫• אפיון מונחה עצמים ‪OOA -‬‬
‫– מושגים בסיסיים‬
‫– עקרונות בסיסיים‬
‫– קשרים‬
‫• סיכום‬
‫‪10‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫מושגים בסיסיים של מודל העצם‬
‫• עצם (‪)Object‬‬
‫• מחלקה (‪)Class‬‬
‫• מופע (‪)Instance‬‬
‫• תכונה (‪ ,)Attribute‬מצב (‪)State‬‬
‫• שיטה (‪,)Method/Service‬‬
‫‪11‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪11‬‬
‫מחלקה‬
‫• מחלקה (‪ – )Class‬תבנית ממנה ניתן לייצר אובייקטים‪.‬‬
‫• מחלקה אינה קיימת באמת‪ .‬היא רק הוראות הכנה לפעילות‬
‫מסוימת‪.‬‬
‫• קבוצת עצמים בעלי מאפיינים משותפים (תכונות‪ ,‬פעולות‪,‬‬
‫יחסים‪ ,‬התנהגות) שייכים לאותה מחלקה‪.‬‬
‫• מחלקה היא הפשטה של אובייקט ממשי‪.‬‬
‫• למחלקה יש שם‪ ,‬תכונות‪ ,‬ושיטות‪.‬‬
‫• למחלקה מוחשית יש מופעים‬
‫שהם האובייקטים‪.‬‬
‫‪12‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪12‬‬
‫תכונות ושיטות‬
Class Name
Attributes
Methods
13
Student
Name
DateofBirth
Address
Phone
Grades
Courses
Student(name)
Calc-average()
Register-for (course)
……..
)Attribute/Property( ‫• תכונות‬
)"‫ אוסף נתונים ("שדות‬.‫המתארים את העצם‬
‫• שיטות‬
)Service/Operation/Method(
‫ אוסף ה"פונקציות" של‬.‫העצם‬/‫המחלקה‬
2009 ,‫ניתוח ואפיון מערכות מידע‬
13
‫מופע של מחלקה‪ :‬אובייקט‬
‫• מופע (‪ )Instance‬של מחלקה ‪ -‬עצם בודד של מחלקה‪.‬‬
‫• לכל עצם יש‪:‬‬
‫– מצב (‪ - )State‬אוסף התכונות (השדות וערכיהם‪ ,‬קשר עם‬
‫עצמים אחרים) בנקודת זמן מסוימת‪.‬‬
‫– התנהגות (‪ - )Behavior‬אוסף פעולותיו המייצגות כיצד העצם‬
‫פועל ומגיב‪.‬‬
‫– זהות (‪ - )Identity‬ייחודיות‪ .‬אין שני עצמים זהים‪.‬‬
‫‪14‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪14‬‬
)‫אובייקט (מופע של מחלקה‬ ‫מחלקה‬
Student
Name:: moshe cohen
DateofBirth: 1.1.79
Address: Haifa
Phone:04-8888888
……….
Student(name)
Calc-average()
Register-for (course)
15
Student
Name
DateofBirth
Address
Phone
Grades
Courses
Student(name)
Calc-average()
Register-for (course)
……..
2009 ,‫ניתוח ואפיון מערכות מידע‬
15
‫תרגיל כיתה ‪Bicycle :‬‬
‫נרצה לתאר מחלקה של אופניים‪.‬‬
‫לאופניים יש שלוש תכונות‪:‬‬
‫‪cadence ,gear , speed‬‬
‫•‬
‫לאופניים יש ‪ 4‬שיטות‪:‬‬
‫‪• setCadence, setGear, applyBrake, speedUp‬‬
‫‪16‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪16‬‬
Bicycle Class
Bicycle
cadence
gear
Speed
setCadence (newValue)
setGear (newValue)
applyBrakes (decrement)
speedUp (increment)
2009 ,‫ניתוח ואפיון מערכות מידע‬
17
Bicycle Code
class Bicycle {
//3 fields
int cadence = 0;
int speed = 0;
int gear = 1;
//4 methods
void setCadence(int newValue) {
cadence = newValue;
}
void setGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
}
2009 ,‫ניתוח ואפיון מערכות מידע‬
18
Create and use objects
class BicycleDemo {
public static void main(String[] args) {
// Create two different Bicycle objects
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
// change values and invoke methods on those objects
bike1.speed = 20;
bike2.gear = 2;
bike1.setCadence(20);
bike1.speedUp(10);
bike2.setGear(3);
bike2.speedUp(12);
}
}
2009 ,‫ניתוח ואפיון מערכות מידע‬
19
‫תוכן ההרצאה‬
‫• מבוא ל ‪UML‬‬
‫• אפיון ועיצוב מונחה עצמים‬
‫– מושגים בסיסיים‬
‫– עקרונות בסיסיים‬
‫– קשרים‬
‫‪20‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫עקרונות בסיסיים של מודל העצם‬
‫‪ .1‬הפשטת נתונים (‪)Data Abstraction‬‬
‫‪ .2‬הכמסה (‪)Information Hiding/Encapsulation‬‬
‫‪ .3‬ממשק המחלקה (‪)Interface‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪.6‬‬
‫מודולאריות )‪(Modularity‬‬
‫היררכיה‪ /‬ירושה )‪(Inheritance/Hierarchy‬‬
‫פולימורפיזם (‪)Polymorphism‬‬
‫שימוש חוזר (‪)Reusability‬‬
‫‪.7‬‬
‫‪ .8‬מחלקה מופשטת (‪) Abstract class‬‬
‫‪21‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪21‬‬
‫‪ .1‬הפשטת נתונים ‪Data Abstraction -‬‬
‫• התפיסה לפיה מתרכזים במאפייניו הרלוונטיים של העצם‪.‬‬
‫• מאפיינים‪:‬‬
‫– הצגת רק מה שחיוני למתבונן מבחוץ‬
‫– ממשקים מוגדרים היטב לעצם‬
‫• דוגמאות‪:‬‬
‫– בדוגמת האופניים בחרנו בשלושה מאפיינים והתעלמנו ממאפיינים‬
‫אחרים כמו‪ :‬צבע‪ ,‬משקל‪ ,‬ומחיר האופניים‬
‫‪Bus‬‬
‫‪yearOfProdction‬‬
‫‪Capacity‬‬
‫‪color‬‬
‫‪22‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪22‬‬
‫‪ .2‬הכמסה ‪Encapsulation/Information Hiding -‬‬
‫• התפיסה לפיה אובייקט מאחד בתוכו את מבני הנתונים‬
‫המכילים את תכונותיו ואת השיטות שאותן הוא מפעיל‪.‬‬
‫• הסתרת פרטי המימוש מהמשתמש באובייקט‪.‬‬
‫• הפרדה בין הממשק (= אוסף השירותים) ובין המימוש (מנגנון‬
‫פנימי)‪:‬‬
‫– כדי להשתמש באובייקט מספיק להכיר‬
‫את הממשק שלו‪ .‬אין צורך להכיר ‪ /‬להבין‬
‫מבנה ומנגנון פעולה פנימיים‪.‬‬
‫‪23‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪23‬‬
‫דוגמא בקוד‬
public class Bicycle {
// the Bicycle class has three fields
public int cadence;
protected int gear;
private int speed;
// the Bicycle class has four methods
public void setCadence(int newValue)
{ cadence = newValue; }
public void setGear(int newValue)
{ gear = newValue; }
protected void applyBrake(int decrement)
{ speed -= decrement; }
private void speedUp(int increment)
{ speed += increment; }
}
2009 ,‫ניתוח ואפיון מערכות מידע‬
25
Create and use objects: public/private
class BicycleDemo {
public static void main(String[] args) {
// Create two different Bicycle objects
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
// change values and invoke methods on those objects
bike1.spead = 5;
bike2.gear = 4;
bike1.setCadence(50);
bike1.speedUp(10);
bike2.setGear(5);
bike2.speedUp(10);
}
}
2009 ,‫ניתוח ואפיון מערכות מידע‬
26
‫‪ .4‬מודולאריות – ‪Modularity‬‬
‫• "כפיית" מבניות‪.‬‬
‫• מודול ‪"-‬חלק" הניתן להפרדה לוגית‪.‬‬
‫• מאפיינים‪:‬‬
‫– כל עצם (מחלקה) עוסק בפונקציונאליות מוגדרת ושונה מהשאר‬
‫– כל עצם (מחלקה) מעוצב ומיושם באופן עצמאי (עד כמה שניתן)‬
‫– יש לשאוף שעצם (מחלקה) יהיה בר שימוש חוזר (‪)Reusable‬‬
‫‪27‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪27‬‬
‫‪ .5‬היררכיה‪/‬ירושה ‪Inheritance/Hierarchy -‬‬
‫• קשר (מדרגי‪/‬רשתי) בין קבוצות המבטא “העתקת” מבנה ו‪/‬או‬
‫תכונות ו‪/‬או התנהגות מקבוצה אחת (קבוצת‪-‬על) לקבוצה‬
‫אחרת (תת‪-‬מחלקה)‪.‬‬
‫• תת‪-‬מחלקה יורשת יכולה להוסיף מאפיינים המיוחדים לה‪.‬‬
‫• יתרונות‪:‬‬
‫– חסכון בהגדרות ובקוד‬
‫– תיקון ועדכון קלים יותר‬
‫‪28‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪28‬‬
‫היררכיה‪/‬ירושה‬
‫• מחלקה ב' יורשת את מחלקה א'‪:‬‬
‫–‬
‫–‬
‫–‬
‫–‬
‫ב' מכילה את כל התכונות של א'‬
‫ב' מכילה את כל הפעולות של א'‬
‫ב' מכילה את כל הקשרים של א'‬
‫בנוסף‪ ,‬ב' מכילה תכונות ופעולות משל עצמה‬
‫• ב' היא תת‪-‬מחלקה (‪ )sub-class‬של א'‬
‫• סימון ב‪ :UML-‬חץ חלול המסתיים במחלקת‬
‫העל‪.‬‬
‫א'‬
‫תכונות‬
‫פעולות‬
‫ב'‬
‫תכונות‬
‫פעולות‬
‫‪29‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪29‬‬
'‫ירושה – דוגמא א‬/‫היררכיה‬
Person
Faculty Member
30
Administrator
Student
2009 ,‫ניתוח ואפיון מערכות מידע‬
30
‫היררכיה‪/‬ירושה – דוגמא ב'‬
‫חשבון בנק‬
‫מט"ח‬
‫עו"ש‬
‫עסקי‬
‫פרטי‬
‫צעירים‬
‫‪31‬‬
‫חיילים‬
‫הלוואה‬
‫בוגרים‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪31‬‬
‫המשך דוגמא‪ :‬אופני הרים ‪ -‬סוג של אופניים‬
‫נרצה לתאר מחלקה של אופני הרים שיורשת ממחלקת אופניים‪.‬‬
‫לאופני הרים יש תכונה נוספת‪:‬‬
‫‪• seatHeight‬‬
‫לאופני הרים יש שיטה נוספת‪:‬‬
‫‪• setSeatHeight‬‬
‫‪32‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪32‬‬
MountainBike Class
Bicycle
.........
.........
MountainBike
seatHeight
setSeatHeight (newValue)
2009 ,‫ניתוח ואפיון מערכות מידע‬
33
‫הורשה בקוד‬
public class MountainBike extends Bicycle {
// the MountainBike subclass has one field
public int seatHeight;
// the MountainBike subclass has one method
public void setHeight(int newValue) {
seatHeight = newValue;
}
}
2009 ,‫ניתוח ואפיון מערכות מידע‬
34
protected ‫שימוש ב‬
public class A {
public class B extends A{
public int z;
public int newY;
public int newX;
private int x;
protected int y;
private getY ()
{ return y;}
protected getX ()
{return x;}
public int getZ () {
z = y;
z = getX();
A a= new A();
newY = a.y;
newX = a.getX();
return z;}
}
}
2009 ,‫ניתוח ואפיון מערכות מידע‬
35
‫‪ .6‬פולימורפיזם (רב‪-‬צורתיות) – ‪Polymorphism‬‬
‫• מחלקה יורשת יכולה לרמוס שיטות שהוגדרו אצל האב‪.‬‬
‫– רמיסה מלאה‬
‫– רמיסה חלקית‬
‫• הרמיסה גורמת לריבוי צורות בעץ ההורשה עבור מימוש של‬
‫אותה שגרה‪.‬‬
‫‪Shape‬‬
‫‪line‬‬
‫‪Length‬‬
‫‪Color‬‬
‫‪X1‬‬
‫‪Y1‬‬
‫)(‪draw‬‬
‫‪Circle‬‬
‫‪Radius‬‬
‫)(‪draw‬‬
‫‪36‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪36‬‬
‫‪ .7‬שימוש חוזר ‪Reuse -‬‬
‫• שילוב רכיבי תוכנה במערכת שנוצרו מחוץ למערכת‪.‬‬
‫• סוגי רכיבים לשילוב‪:‬‬
‫– פותחו עבור מערכת אחרת‬
‫– פותחו כרכיבים גנריים המיועדים מראש לשימוש חוזר‬
‫– ציבוריים‬
‫• רכיבים מסחריים "מן המדף"‬
‫• קוד פתוח (‪)Source Code‬‬
‫• אופני שימוש חוזר‪:‬‬
‫– שיתוף (‪ – )Sharing‬שימוש חוזר באותה רוטינת קוד‬
‫– שכפול (‪ – )Copying/Cloning‬העתקת קטע קוד מתכנית אחרת‬
‫– התאמה (‪ – )Adjusting‬שימוש באבטיפוס ושילוב רכיבים שהם‬
‫‪Reusable‬‬
‫‪37‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪37‬‬
‫‪ .8‬מחלקה מופשטת‬
‫• אינה מאפשרת ליצור ממנה מופעים‪.‬‬
‫• משרתת את המכניזם של ההורשה‬
‫>>‪Animal<<abstract‬‬
‫‪Cat‬‬
‫‪38‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪Dog‬‬
‫תוכן ההרצאה‬
‫• מבוא ל ‪UML‬‬
‫• אפיון ועיצוב מונחה עצמים‬
‫– מושגים בסיסיים‬
‫– עקרונות בסיסיים‬
‫– קשרים‬
‫• סיכום‬
‫‪39‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫קשרים‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪40‬‬
‫קשר הקשר ‪Association -‬‬
‫מחלקת קשר‬
‫קשר הכלה‬
‫קשר הכלה חזקה‬
‫קשר אסוציאטיבי עצמאי‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪ .1‬קשר הקשר ‪Association -‬‬
‫• הקשר הפשוט ביותר‪.‬‬
‫• מבטא יחס מסוים בין אובייקטים‪ :‬הכרה‪ ,‬ידיעה‪ ,‬שימוש‪.‬‬
‫• מסומן ע"י קו בין מחלקות‬
‫–‬
‫–‬
‫–‬
‫–‬
‫כיוון‬
‫קרדינאליות‬
‫מידת ריבוי‬
‫שם‬
‫‪Food‬‬
‫‪41‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪Cat‬‬
‫‪ .2‬מחלקת קשר‬
‫• מחלקת קשר מתארת את הקשר עצמו‪.‬‬
‫‪Reader‬‬
‫‪Book‬‬
‫‪Borrow‬‬
‫‪42‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪ .3‬קשר הכלה‬
‫• הרחבה של קשר אסוציאטיבי‪.‬‬
‫• מבטא את העובדה שמחלקה אחת היא הכלה של מחלקה‬
‫אחרת‬
‫‪Car‬‬
‫‪43‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪1‬‬
‫‪wheel‬‬
‫*‬
‫‪ .4‬קשר הכלה חזקה‬
‫• מבטא את העובדה שמחלקה אחת היא הרכבה של מחלקה‬
‫אחרת‬
‫• האובייקט החלש חי בזכות האובייקט החזק‬
‫‪Car‬‬
‫‪44‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪wheel‬‬
‫‪ .5‬קשר אסוציאטיבי עצמאי‬
‫• ניתן לתאר קשר של מחלקה אל עצמה‪ ,‬לצורך פישוט‬
‫התרשים‬
‫*‬
‫‪employee‬‬
‫‪employee‬‬
‫‪manager‬‬
‫‪45‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫‪1‬‬
‫תוכן ההרצאה‬
‫• מבוא ל ‪UML‬‬
‫• אפיון ועיצוב מונחה עצמים‬
‫– מושגים בסיסיים‬
‫– עקרונות בסיסיים‬
‫– קשרים‬
‫• סיכום‬
‫‪46‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬
‫סיכום‬
‫לא עוד תהליכים!‬
‫אמור מעתה עצמים או אובייקטים‬
‫ונעבור ל‪:‬‬
‫‪Use Case diagram‬‬
‫‪47‬‬
‫ניתוח ואפיון מערכות מידע‪2009 ,‬‬