<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OOP – תכנות מונחה עצמים on kodkod | מבואות קודקוד</title><link>https://intro-kodkod-6.nm-ambition.com/docs/oop/</link><description>Recent content in OOP – תכנות מונחה עצמים on kodkod | מבואות קודקוד</description><generator>Hugo</generator><language>he</language><copyright>מבואות קודקוד</copyright><atom:link href="https://intro-kodkod-6.nm-ambition.com/docs/oop/index.xml" rel="self" type="application/rss+xml"/><item><title>מחלקות ואובייקטים: מהבעיה ועד Class שלמה</title><link>https://intro-kodkod-6.nm-ambition.com/docs/oop/01-classes-and-objects/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/docs/oop/01-classes-and-objects/</guid><description>&lt;h2 id="מה-בשיעור"&gt;מה בשיעור&lt;/h2&gt;
&lt;p&gt;השיעור הזה בנוי כסיפור אחד, באותו סדר כמו במצגת. מתחילים ממערכת בנק קטנה שכתובה עם מילונים ופונקציות, רואים איפה היא נשברת, ובכל פרק מוסיפים כלי אחד שפותר בעיה אחת:&lt;/p&gt;</description></item><item><title>מערך שיעור: Class, Object ו-Instance</title><link>https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-classes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-classes/</guid><description>&lt;p&gt;&lt;strong&gt;משך:&lt;/strong&gt; יום לימוד מלא — 6 שעות אקדמיות (270 דקות).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;מטרת השיעור:&lt;/strong&gt; הסטודנטים יבינו &lt;strong&gt;למה&lt;/strong&gt; OOP קיים (לפני &lt;strong&gt;איך&lt;/strong&gt;), ויבנו מודל מנטלי יציב של Class כתבנית, Object כמופע, ו-&lt;code&gt;self&lt;/code&gt; כ&amp;quot;האובייקט הזה&amp;quot;.&lt;/p&gt;</description></item><item><title>אובייקטים בעבודה: מצב, הסתרת מידע, Properties ומחלקה שלמה</title><link>https://intro-kodkod-6.nm-ambition.com/docs/oop/02-objects-in-practice/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/docs/oop/02-objects-in-practice/</guid><description>&lt;h2 id="מה-בשיעור"&gt;מה בשיעור&lt;/h2&gt;
&lt;p&gt;השיעור הזה בנוי כסיפור אחד, באותו סדר כמו במצגת. כל פרק נשען על הקודם:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;פרק ראשון&lt;/strong&gt; — אובייקטים ומצב: הרבה אובייקטים, מצב שמשתנה, ואובייקט שמחזיק אובייקט&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;פרק שני&lt;/strong&gt; — הסתרת מידע: כל קוד יכול לשבור את הנתונים, אז מסתירים אותם מאחורי ממשק&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;פרק שלישי&lt;/strong&gt; — בדיקת תקינות: תחביר פשוט של שדה, ובדיקה בכל השמה עם &lt;code&gt;@property&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;פרק רביעי&lt;/strong&gt; — מחלקה שלמה: מחברים את הכול למחלקה אחת עם אחריות, כללים וממשק&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;בסוף השיעור — תרגול, ו&lt;strong&gt;מיני פרויקט&lt;/strong&gt; שמחבר את כל הפרקים.&lt;/p&gt;</description></item><item><title>מערך שיעור: עבודה נכונה עם Objects ו-Encapsulation</title><link>https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-state-encapsulation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-state-encapsulation/</guid><description>&lt;p&gt;&lt;strong&gt;משך:&lt;/strong&gt; יום לימוד מלא — 6 שעות אקדמיות (270 דקות).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;מטרת השיעור:&lt;/strong&gt; להעמיק מ&amp;quot;איך כותבים Class&amp;quot; ל&amp;quot;איך כותבים Class &lt;strong&gt;טובה&lt;/strong&gt;&amp;quot;: שמירה על כללים, הסתרת מימוש, ועבודה נכונה עם הרבה אובייקטים שמחזיקים הפניות זה לזה.&lt;/p&gt;</description></item><item><title>ירושה ו-super: Classes דומות בלי קוד כפול</title><link>https://intro-kodkod-6.nm-ambition.com/docs/oop/03-inheritance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/docs/oop/03-inheritance/</guid><description>&lt;h2 id="מה-בשיעור"&gt;מה בשיעור&lt;/h2&gt;
&lt;p&gt;השיעור הזה בנוי כסיפור אחד, באותו סדר כמו במצגת:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;פרק ראשון&lt;/strong&gt; — למה ירושה: אותו קוד פעמיים, ואיך יורשים במקום להעתיק&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;פרק שני&lt;/strong&gt; — דריסה ו-&lt;code&gt;super()&lt;/code&gt;: ירושה, אבל לא בדיוק — משנים רק חלק מההתנהגות&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;בסוף השיעור — תרגול, ו&lt;strong&gt;מיני פרויקט&lt;/strong&gt; שמחבר את שני הפרקים.&lt;/p&gt;</description></item><item><title>Polymorphism: ממשק משותף, התנהגות שונה</title><link>https://intro-kodkod-6.nm-ambition.com/docs/oop/04-polymorphism/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/docs/oop/04-polymorphism/</guid><description>&lt;h2 id="מה-נלמד"&gt;מה נלמד?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;מהו &lt;strong&gt;Polymorphism&lt;/strong&gt; (רב-צורתיות).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ממשק משותף&lt;/strong&gt; (Common Interface): אותה מתודה, התנהגות שונה לכל סוג.&lt;/li&gt;
&lt;li&gt;למה זה &lt;strong&gt;מחליף&lt;/strong&gt; את ה-&lt;code&gt;if type == ...&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Duck Typing&lt;/strong&gt;: הגרסה הגמישה של Python.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="למה-צריך-את-זה"&gt;למה צריך את זה?&lt;/h2&gt;
&lt;p&gt;נניח שמערכת תשלומים צריכה לחייב לקוח, והלקוח יכול לשלם בכרטיס אשראי, ב-PayPal או בהעברה בנקאית. בלי Polymorphism:&lt;/p&gt;</description></item><item><title>מערך שיעור: Inheritance ו-Polymorphism</title><link>https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-inheritance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-inheritance/</guid><description>&lt;p&gt;&lt;strong&gt;משך:&lt;/strong&gt; יום לימוד מלא — 6 שעות אקדמיות (270 דקות).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;מטרת השיעור:&lt;/strong&gt; הסטודנטים יבינו ירושה ככלי ל&lt;strong&gt;מניעת כפילות&lt;/strong&gt; ולשיקוף יחס &amp;ldquo;הוא סוג של&amp;rdquo;, ו-Polymorphism ככלי ל&lt;strong&gt;קוד אחד שעובד על הרבה סוגים&lt;/strong&gt;, במקום שרשראות של &lt;code&gt;if&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Single Responsibility ב-OOP ו-Composition לעומת Inheritance</title><link>https://intro-kodkod-6.nm-ambition.com/docs/oop/05-srp-and-composition/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/docs/oop/05-srp-and-composition/</guid><description>&lt;h2 id="מה-נלמד"&gt;מה נלמד?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Single Responsibility Principle (SRP)&lt;/strong&gt; ברמת ה-Class.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Composition&lt;/strong&gt; (הרכבה): אובייקט שמורכב מאובייקטים אחרים.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Composition מול Inheritance&lt;/strong&gt;: איך בוחרים.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="למה-צריך-את-זה"&gt;למה צריך את זה?&lt;/h2&gt;
&lt;p&gt;בנושא Python למדנו SRP ל&lt;strong&gt;פונקציות&lt;/strong&gt;: כל פונקציה עושה דבר אחד. אותו עיקרון בדיוק חל על &lt;strong&gt;Classes&lt;/strong&gt;, ושם הוא אפילו חשוב יותר, כי Class גדולה היא &amp;ldquo;ערימה&amp;rdquo; של נתונים &lt;strong&gt;ו&lt;/strong&gt;התנהגות. כשכל שינוי (בפורמט הקבלה, בשיטת התשלום, בחישוב המע&amp;quot;מ) נוגע באותה Class, היא נהיית שבירה ומפחידה לשינוי.&lt;/p&gt;</description></item><item><title>תרגול מודרך: מדרישה מילולית למבנה מחלקות</title><link>https://intro-kodkod-6.nm-ambition.com/docs/oop/06-from-requirements-to-classes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/docs/oop/06-from-requirements-to-classes/</guid><description>&lt;h2 id="מה-נלמד"&gt;מה נלמד?&lt;/h2&gt;
&lt;p&gt;זה שיעור &lt;strong&gt;סדנה&lt;/strong&gt;. ניקח דרישה מילולית אחת, ונעבור &lt;strong&gt;יחד&lt;/strong&gt; על כל התהליך:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;קריאה וסימון.&lt;/li&gt;
&lt;li&gt;החלטה על Classes.&lt;/li&gt;
&lt;li&gt;אחריות ונתונים לכל Class.&lt;/li&gt;
&lt;li&gt;קשרים בין ה-Classes.&lt;/li&gt;
&lt;li&gt;שלד קוד.&lt;/li&gt;
&lt;li&gt;מימוש.&lt;/li&gt;
&lt;li&gt;בדיקה, ותיקון התכנון.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="למה-צריך-את-זה"&gt;למה צריך את זה?&lt;/h2&gt;
&lt;p&gt;בפרויקט ה-OOP שתבנו בהמשך השבוע, &lt;strong&gt;לפני כתיבת הקוד צריך שלב Design&lt;/strong&gt;. השיעור הזה הוא החזרה הגנרלית: אותו תהליך בדיוק, על בעיה אחרת, כשהמרצה מוביל.&lt;/p&gt;</description></item><item><title>מערך שיעור: תכנון OOP ותרגול משלב</title><link>https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/docs/oop/instructor-design/</guid><description>&lt;p&gt;&lt;strong&gt;משך:&lt;/strong&gt; יום לימוד מלא — 6 שעות אקדמיות (270 דקות).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;מטרת השיעור:&lt;/strong&gt; להעביר את הסטודנטים מ&amp;quot;לדעת לכתוב Class&amp;quot; ל&amp;quot;לדעת &lt;strong&gt;לתכנן&lt;/strong&gt; מערכת של Classes&amp;quot;: לקבל דרישה מילולית ולהפוך אותה למבנה סביר ומנומק.&lt;/p&gt;</description></item></channel></rss>