صفحه 1:
ارث برى استفاده ى مجدد ازكلاس توسط وراثت مظفر بگ محمدی دانشكاه ايلام

صفحه 2:
استفاده ی مجدد از کلاس ما دیدیم كه چگونه کلاسها و کد آنها در ترکیب استفاده شدند. #در ترکیب, شی یک پا چند شی دیگر را به عنوان متغیبر استفاده می کرد. © تركيب رابطه ی "داشتن" را مدل می کند. ‎SG Person ,»®‏ نام (عصتتاو) دارد. #ماشین موتور دارد. ‎٩‏ کتاب صفحه دارد. ‎ ‎ ‎

صفحه 3:
ارتباط اشیاء © شى مى تواند نوع خاصى از یک شی دیگر باشد. ن یک وسیله ی نقلیه است. ی #دانشجو از نوع ۳۵۲90۳ است. این نوع ارتباط تحت نام "نوعی از" شناخته می شود. #در 00۳, این مدل ارتباطی توسط تکنیک برنامه نویسی ورائت مدل مى شود. #وراثت با اضافه كرد به كلا ی جاری, کلاسهای جدیدی ایجاد می کند ‎a‏ اا ى بدون دستكا ستكارى استفاده مى شود.

صفحه 4:
ورائت #ورانت از تکنیکهای اصلی 00۳ است. #نحوه ی استفاده از ورائت: #ابتدا یک کلاس عمومی (پایه) تعریف می شود. سپس نسخه های خصوصی تر کلاس را با اضافه كردن متدها و متغییرهای جدید تعریف می کنیم. #می گوییم که نسخه ی خصوصی مندها و متغیبرهای نسخه ی عمومی کلاس پایه را به ارث برده است.

صفحه 5:
>) کلاسهای مشتق شده #معمولاً هنگام طراحی بعضی کلاسها ورائت بصورت طبیعی خود را نمایان می کند: #در برنامه ی حقوق کارمندان یک اداره دو نوع کارمند داریم: ساعتی و حقوقی کارمندان ساعتی می توانند پاره وقت یا کامل باشند. ® کارمندان با حقوق ماهانه ی مشخص نیز به دو دسته ی فنی و اداری تقسیم می شوند.

صفحه 6:
کلاسهای مشتق شده تمام کارمندان مشخصات مشترکی دارند: #اسم و تاريخ استخدام © متدهاى دسترسى و تغيير نام و تاريخ استخدام © بعضى كارمندان مشخصات خصوصى ترى دارند: #میزان پرداخت کارمند ساعتی: دستمزد هر ساعت کار کارمند پیمانی: میزان پایه ی حقوق #نحوه ی محاسبه میزان پرداختی برای این دو نوع کارمند متفاوت است.

صفحه 7:
ورائت و 00۳ #ورائت نوعی انتزاع است که به منظور: #اشتراک مشابتهای بین کلاسها (مثل نام و تاریخ استخدام) و 6حفظ تفاوتها (مثل نحوه محاسبه ی میزان پرداختی) انجام می شود. ورائت به ما اجازه می دهد که کلاسها را بصورت خانواده هایی از نوع مرتبط دسته بندی کنیم و متدها و خصوصیات مشترک آنها را به اشتراك بكذاريم.

صفحه 8:
کلاسهای عمومی #می توان برای تمام کارمندان یک کلاس عمومی به نام 6 تعریف کرد. سپس می توان کارمندان ساعتی و پیمانی را از روی این كلاس تعريف كرد. سيس مى توان از كلاس ©6لا511010/ا011ا0!! براى تعريف کلاس ۴۲۱۵۱۵۱/66 ۴8۵۲۲1161۲۱۵۷۳۱۷ استفاده کرد و ....

صفحه 9:
Display 7.1 A Class Hierarchy ===: A Class Hierarchy

صفحه 10:
Employee pS 1 بر ‎Class Invariant: All objects have a name string and hire date.‏ A name string of "No name" indicates no real name specified yet. A hire date of Jan 1, 1000 indicates no real hire date specified yet. */ public class Employee 3 private String name; private Date hireDate; // 0-argument constructor public Employee( ) 1 name = "No name"; hireDate = new Date("Jan", 1, 1000); //Just a placeholder } // alternate constructor public Employee(String theName, Date theDate) { /* code here */ } // copy constructor public Employee(Employee originalobject) { /* code here */ } (continued)

صفحه 11:
كلاس ۴۲۳۱010766 // some accessors and mutators String getName( ){ /* code here */ } Date getHireDate( ) { /* code here */ } void setName(String newName) { /* code here */ } void setHireDate(Date newDate) { /* code here */ public public public public // everyone gets the same raise public double calcRaise( { return 200.00; } // toString and equals String toString( ) { /* code here */ } boolean equals(Employee otherEmployee) public public { /* code here */ } } // end of Employee Class

صفحه 12:
)» ( کلاسهای مشتق شده چون کارمند ساعتی نوعی از کارمند است, می گوییم که از کلاس 6 مشتق شده است. © كلاس مشتق شده را می توان با اضافه كردن متد يا خصوصيت به يك كلاس جارى تعريف نمود. © كلاس مشتق شده از كلاس مبنا مشتق مى شود. © هنكام تعريف كلاس مشتق شده بايد عبارت ‎extends‏ ‏5 استفاده شود. public class HourlyEmployee extends Employee

صفحه 13:
HourlyEmployee ‏كلاس‎ pe Class Invariant: All objects have a name string, hire date, nonnegative wage rate, and nonnegative number of hours worked. */ public class HourlyEmployee extends Employee { // instance variables unique to HourlyEmployee private double wageRate; private double hours; //for the month // no-argument Constructor public HourlyEmployee( ) { /* code here */} // alternative constructor public HourlyEmployee(String theName, Date theDate, double theWageRate, double theHours) { /* code here */} // copy constructor public HourlyEmployee(HourlyEmployee originalHE) { /* code here */} (continued)

صفحه 14:
کلاس ۲۱۵۱۲۱۲۳۱۴0۱0۲66 // accessors and mutator specific to HourlyEmployee public double getRate( ) { /* code here Public double getHiours( ) { /* code here public wold Sethours (dauble HourswerKed) { /* code here public void setRate(double newWageRate) { /* code here */ } // toString and equals specific for HourlyEmployee foblic String toStringt ) { /* code here public boolean equals(HourlyEmployee otherHE) { /* code here */ } } // end of HourlyEmployee Class

صفحه 15:
زير كلاس #به کلاس مشتق شده زیر کلاس هم می گویند. © كلاس والد تحت اسم كلاس مبنا يا كلاس يايه نيز شناخته د. #زين كلاسن موارة زيؤرا | ز کلاس مبنا به ارث می برد: کرد فتفيرهاى :عمومى. و يخصوصى استاتيكى كلاس مشتقشده مى تواند متغيير,متغيير استاتيك و متد د شته باشند

صفحه 16:
1 استفاده از ۲01076 ۲۲0 public class HourlyEmployeeExample public static void main(String[] args) HourlyEmployee joe new HourlyEmployee(“Joe Worker", new Date(1, 1, 2004), 50.50, 160); // getName is defined in Employee ‏رن‎ name is + joe.getName( )); // setName is defined in Employee System.out.printLn("Changing joe's name to Josephine."); joe. setName(" Josephine") ; // setRate is specific for HourlyEmployee System.out.println(“Giving Josephine a raise” joe.setRate( 65.00 ); // calcRaise is defined in Employee double raise = joe.calcRaise( ); System.out.println(“Joe’s raise is + raise );

صفحه 17:
بازنویسی یک متد کلاس مشتق شده می تواند کلاسهای به ارث برده شده را بازنویسی کند. # برای بازنویسی یک متد, آن متد در کلاس مشتق شده دوباره تعریف و پیاده می شود. © بعنوان ‎Gly | 93> Ges) HourlyEmployee 2S s Jk‏ محاسبه ی افزايش حقوق دارد. ‎sre AN‏ 0212153156( ) از كلاس ‎Employee‏ را دوباره با نویسی می کند.

صفحه 18:
مثال بازنویسی public double catcRaise( ) { return 200.00; } 1 public class HourlyEmployee extends Employee 3 // overriding calcRaise ~ sane signature as in Employee public double calcRaise( ) {return 500.00; ( حالا کد: HourlyEmployee joe = new HourlyEmployee( ); double raise = joe.calcRaise( ); ‎cal cRaise we‏ را از کلاس 1102111۵101۵۵ فراخوانی می کند. ‏جهت بازنویسی یک متد در کلاس مشتق شده, امضای متد در کلاس مشتق شده باید با امضای متد در کلاس پایه -یکسان باک ‎ ‎ ‎

صفحه 19:
بازنویسی و بارگذاری مجدد #دقت کنید که بازنویسی و بارگذاری مجدد متد را با هم قاطی در بازنویسی متد, امضای متد در کلاس مشتق شده با امضای متد در کلاس پایه یکسان است. #اما اگر امضای متدی در کلاس مشتق شده یا در کلاس ‎Lah‏ ‏امضای متد در كلاس يايه متفاوت باشد (اما اسم متدها یکسان باشد), می گوییم که متد دوباره بازگذاری شده است. #دقت کنید که در هر دو حالت, كلاس مشتق شده به متد کلاس پایه دسترسی دارد و می تواند از آن استفاده کند.

صفحه 20:
>) اصلاح کننده ی ‎final‏ #اگر کلمه 1021 قبل از تعریف مند قرار گیرد, مند را نمی توان در كلاسهاى مشتق شده بازنویسی کرد. #اكر كلمه 8121 قبل از تعریف کلاس قرار گیرد, نمی توان از آن کلاس اشتقاق نمود و ارث بری کرد.

صفحه 21:
استفاده از متغییرهای خصوصی کلاس پایه در متدهاى كلاس مشتق شده, نمی توان اسم فراخوانی کرد. #یک شی ‎HourlyEmployee ¢55 j!‏ به متغییر 7612266 خصوصی دسترسی ندارد اگر چه از کلاس پایه ی ۲0010166 ارث بری نموده است. #اما با استفاده از متدهای 20665501 و 101112101 تعریف شده در کلاس پایه, می توان در کلاس مشتق شده به متغییرهای كلاس پایه دسترسی داشت. خصوصی را با #یک شی ‎HourlyEmployee ¢¢5 j!‏ با استفاده از متدهای عادناه‌تاآاعع و ع26(آعسنآآاهه به متغییر 2۲612266 خصوصی دسترسی دارد.

صفحه 22:
استفاده از متغییرهای خصوصی کلاس پایه ... #اگر کلاس مشتق شده به متغییرهای خصوصی دسترسی داشته باشد, #هر کس که بخواهد اصول کپسوله سازی را نقض کند, می تواند با استفاده از ورائت از روی کلاس پایه یک کلاس مشتق شده بسازد و به متغییرهای خصوصی کلاس پایه دسترسی داشته باشد. #یعنی ممکن است به اشتباه یا عمدا متغییرهای خصوصی را بصورت نادرست تغییر داد.

صفحه 23:
دلیل عدم ارث بری متدها در کلاسهای مشتق شده متدهای خصوصی کلاس پایه نیز متل متغییرهای خصوصی قابل ارث بری نیستند. © متد خصوصى كاملاً غير قابل دسترسی است مگر این که بصورت غير مستقيم صدا زده شود. ۳5 #یعنی ما متدی عمومی از کلاس پایه را صدا بزنیم و داخل آن متد یک متد خصوصی کلاس پایه صدا زده شود. کند زیرا متدهای خصوصی بعنوان ‎|e‏ ضوع ایجاد اشکال نمی کند زیرا ‎Somat talons yall ext ae oe‏

51,000 تومان