הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   למה אתם קוראים OOP? (https://hosts.co.il/forums/showthread.php?t=27400)

BlueNosE 27-07-06 12:01

למה אתם קוראים OOP?
 
שלום,
הרבה מתכנתי PHP טוענים שהם עובדים עם OOP.

לפי מה שהבנתי, PHP לא תומכת בOOP עד גירסא 5 לפחות.
איך אתם מגדירים תכנות מונחה עצמים?
תכנות שעובד לפי מודל קבוע ועליו מתווספים הנתונים?
אקח רעיון להסבר שיטת הOOP מתוך איתן, מדריך C++ למתקדמים.

נניח שיש לכם מכונית. לכל מכונית יש 4 גלגלים, 4 דלתות, הגה אחד... אלה דברים שאפשר להגדיר במחלקה או בSTRUCT.
הנתונים שהמחלקה תטפל בהם הם נתונים כגון:
נפח המנוע, מהירות מירבית, צבעים, שנת ייצור וכולה.

אם זאת ההגדרה לOOP, הרי שPHP תמכה מאז ומתמיד בOOP, ע"י הגדרת CLASS עם נתונים משתנים שמקבלים מFUNCTION.

אני לא בטוח בקשר לזה.

בקיצור,
אפשר הסבר חד משמעי מה זה OOP?

יום טוב,
עומר.

omaniusd 27-07-06 12:08

Encapsulation, פולימורפיזם, הורשה.
שפה שמאפשרת מימוש של שלושת עקרונות הOOP הללו בצורה מלאה, היא שפה מונחית עצמים.

בPHP, יש אפשרות להפשטה כלשהי? יש Interface? יש אפשרות ל overriding? יש למתכנת אפשרות לממש את כל שלושת העקרונות הללו?
אם כן, אז היא OOP. יכול להיות שיש class, אבל שזה למעשה לא OOP כי הוא לא מאפשר מימוש התכונות הללו.

BlueNosE 27-07-06 12:14

אני יודע שהורשה יש בPHP.
למה אתה קורא INTERFACE?
ומה זה בדיוק OVER RIDING? דריסת הקוד? 8-*

omaniusd 27-07-06 12:18

http://www.devarea.be/Front/NewsNet/...eportId=147933
זה לגבי Interfaces.

לגבי Over Riding, זה אחד מהמאפיינים הבולטים של פולימורפיזם. יש לי איזושהי מתודה, נניח באחד מה Controls המוכנים. נניח המתודה שמציירת את החלון ב Windows Application. אני אומר "אני רוצה שהמתודה הזאת תתנהג אחרת", שזאת למעשה המשמעות של פולימורפיזם (אותו רכיב, יכול להתנהג בצורות שונות בהתאם לצורך), אני דורס את ההתנהגות המקורית, ומחליף אותה (לפחות חלקית) במשהו שלי.
וזה, דרך אגב, תקף גם למתודות שאתה עושה. מתודה, שתעמוד במצבים שונים.

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

Elad-A 27-07-06 12:22

מה זה OOP? (סליחה על הבורות)

BlueNosE 27-07-06 12:26

ציטוט:

נכתב במקור על ידי omaniusd
http://www.devarea.be/Front/NewsNet/...eportId=147933
זה לגבי Interfaces.

לגבי Over Riding, זה אחד מהמאפיינים הבולטים של פולימורפיזם. יש לי איזושהי מתודה, נניח באחד מה Controls המוכנים. נניח המתודה שמציירת את החלון ב Windows Application. אני אומר "אני רוצה שהמתודה הזאת תתנהג אחרת", שזאת למעשה המשמעות של פולימורפיזם (אותו רכיב, יכול להתנהג בצורות שונות בהתאם לצורך), אני דורס את ההתנהגות המקורית, ומחליף אותה (לפחות חלקית) במשהו שלי.
וזה, דרך אגב, תקף גם למתודות שאתה עושה. מתודה, שתעמוד במצבים שונים.

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

תודה רבה.

בPHP אין CONTROLS, ככה שאין ממש טעם בOVERRIDING.

עריכה:
אלעד...
GOOGLE IT?
OOP תוצאה ראשונה:
Object-Oriented Programming
את הפירוט תוכל למצוא בהודעות שנכתבו בנושא הזה.

omaniusd 27-07-06 12:27

ציטוט:

נכתב במקור על ידי BlueNosE
תודה רבה.

בPHP אין CONTROLS, ככה שאין ממש טעם בOVERRIDING.

עריכה:
אלעד...
GOOGLE IT?
OOP תוצאה ראשונה:
Object-Oriented Programming
את הפירוט תוכל למצוא בהודעות שנכתבו בנושא הזה.

דבר ראשון, overriding זה לא רק ל Controls מוכנים. הבאתי את זה, כי זאת הדוגמא הכי קלה.
אבל זה רלוונטי גם למתודות ודברים שאתה כותב.

BlueNosE 27-07-06 12:28

מעניין אותי פעם לעבוד מול PHP 5 ולראות איך היא עובדת בעזרת OOP.

עוד עריכה:
OOP ON "PHP 5", GOOGLE
http://www.developer.com/lang/php/article.php/3604111

PHP עם PRIVATE?!?!?!?!
וואי, זה חידוש.
דווקא הייתי שמח, זה מאוד שימושי.

The Penguin 27-07-06 12:32

אני קורא רק ל OP אבל זה במירק :\
אז לא יודע

omaniusd 27-07-06 12:36

ציטוט:

נכתב במקור על ידי BlueNosE
מעניין אותי פעם לעבוד מול PHP 5 ולראות איך היא עובדת בעזרת OOP.

עוד עריכה:
OOP ON "PHP 5", GOOGLE
http://www.developer.com/lang/php/article.php/3604111

PHP עם PRIVATE?!?!?!?!
וואי, זה חידוש.
דווקא הייתי שמח, זה מאוד שימושי.

מצייני גישה הם חלק בלתי נפרד מOOP, ומשוייכים ל Encapsulation.

BlueNosE 27-07-06 12:38

אני מתאר לעצמי,
אבל בכל זאת.
אני מסתדר יפה מאוד גם בלי להגדיר אם האובייקט ניתן לשימוש מבפנים או מבחוץ,
כי אני יכול לכתוב $this->FuncName ולקרוא לאובייקט פנימי.
בוא נגיד את זה ככה:
אתה לא תוכל להריץ את הקוד באופן אחר, ואני משתש בפונקצייה רק באופן פנימי, אז מה משנה ההגדרה שלה?

omaniusd 27-07-06 12:48

ציטוט:

נכתב במקור על ידי BlueNosE
אני מתאר לעצמי,
אבל בכל זאת.
אני מסתדר יפה מאוד גם בלי להגדיר אם האובייקט ניתן לשימוש מבפנים או מבחוץ,
כי אני יכול לכתוב $this->FuncName ולקרוא לאובייקט פנימי.
בוא נגיד את זה ככה:
אתה לא תוכל להריץ את הקוד באופן אחר, ואני משתש בפונקצייה רק באופן פנימי, אז מה משנה ההגדרה שלה?

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

BlueNosE 27-07-06 13:02

עדיין לא הבנתי איך יכולים להיות פטרנים באינטרנט.
למה אתה קורא פטרן?
אני רוצה להבין בדיוק מה זה OOP ומה הרכיבים שלו לפני שאני ניגש ללמידת C#.

שוב תודה רבה.

omaniusd 27-07-06 13:09

Design Pattern אלה מוסכמות ושיטות לכתיבת קוד ולפתרון בעיות נפוצות בכתיבת קוד.
כמו איזשהן הצעות, שמאפשרות לך לכתוב את הקוד באיזושהי צורה. יש כאלה לתכנות פרוצדוראלי, להכל.
יש מספר כאלה לOOP, שמפורטים בצורה מצויינת במסמך PDF שאפשר למצוא בפורום הנדסת תוכנה בתפוז.


כל הזמנים הם GMT +2. הזמן כעת הוא 01:37.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ