May 29, 2007 04:16 PM
Is a (inheritance):
class Building{
…….
}
class House extends Building{
…….
}
Has a (Composition):
Class House{
Bathroom room = new Bathroom();
…….
public void getTotMirrors(){
room.getNoMirrors();
…….
}
}
mahyar_ev | 04:16 PM | Comment(s)(2)
EncapsulationMay 28, 2007 03:04 PM
مثال:
private int vmarks = 0;
private String name;
public void setMarks(int mark) throws MarkException {
if(mark > 0)
this.vmarks = mark;
else {
throw new MarkException("No negative Values");
}
}
public int getMarks(){
return vmarks;
}
}
ارتباط اشياي ديگر با كلاس MyMarks از طريق دو متد setMarks و getMarks برقرار مي شود.
mahyar_ev | 03:04 PM | Comment(s)(0)
Inheritanceدر جاوا دو گونه inheritance وجود دارد :
مثال:
Public void deposit(double amount){
……..
}
public void withdraw(double amount){
……..
}
}
public class SavingsAccount extends Account{
Public double calculateInterest(double amount){
……..
}
}
2- Interface inheritance (Type Inheritance) يا SubTyping
مثال:
public abstract void deposit(double amount);
public abstract void withdraw(double amount);
}
public interface SavingAccount extends Account {
Public abstract double calculateInterest(double amount);
}
public class SavingAccountImpl implements SavingAccount{
AccountHelper helper = new AccountHelper();
public void deposit(double amount){
………
}
public void withdraw(double amount){
………
}
}
همانطور كه مي بينيد در interface تعريف متغير وجود ندارد. همچنين بدنه و پياده سازي متدها، در interface قابل تعريف نيست. تنها declaration متدها در interface مي آيد.
mahyar_ev | 02:35 PM | Comment(s)(0)
PIEMay 27, 2007 11:28 AM
Polymorphism يعني استفاده از يك متغير براي ارجاع به Object هايي با type هاي متفاوت. فايده اصلي Polymorphism امكان افزودن class هاي جديد است، بدون اينكه نياز به اصلاح كدهاي قبلي باشد. مثال:
Shape s = new Circle(); // دايره
listShapes.add(s);
s = new Square(); // مربع
listShapes.add(s);
s = new HalfCircle(); //نيم دايره
listShapes.add(s);
getTotArea(listShapes); // اين متد مجموع مساحت دايره،مربع و نيم دايره را برميگرداند
public double getTotArea(List listShapes){
Iterator it = listShapes.iterator();
double totalArea = 0.0;
while (it.hasNext()){
Shape s = (Shape) it.next();
totalArea += s.area(); // Polymorphic method call
}
Return totalArea;
}
دو جزء ديگر PIE يعني Inheritance و Encapsulation در مطالب بعدي ارائه خواهند شد.
mahyar_ev | 11:28 AM | Comment(s)(2)
تفاوت هاي جاوا و ++CMay 23, 2007 04:09 PM
1- جاوا از pointer پشتيباني نمي كند.
2- جاوا از multiple inheritance حمايت نمي كند. به جاي آن از multiple interface inheritance حمايت مي كند كه به object ها امكان مي دهد كه از interface هاي مختلف متدهاي گوناگوني را به ارث ببرند.
3- جاوا destructor ندارد. به جاي آن متد finalize() دارد كه توسط garbage collector فراخواني مي شود.
4- جاوا structure و union ندارد.
5- در جاوا همه چيز در داخل class است. لذا متغير و تابع global ندارد.
6- مديريت حافظه و garbage collection در جاوا، اتوماتيك است.
mahyar_ev | 04:09 PM | Comment(s)(0)
مقدماتبراي برنامه نويسي جاوا لازم است كه از سايت Sun ، يكي از نسخه هاي جاوا را download و نصب نماييد. البته اين را هم بايد بگويم كه مدتي است به نظر مي رسد سايت Sun امكان download را براي IP هاي ايراني بسته باشد. در اين صورت بايد آن را از بازار رضا يا مجتمع پايتخت و جاهايي از اين قبيل تهيه كنيد.
براي نوشتن برنامه هاي جاوا نيز از هر اديتوري حتي notepad مي توانيد استفاده نماييد. اما استفاده از IDE ها پيشنهاد مي شوند. IDE هاي گوناگوني براي نوشتن برنامه هاي جاوا وجود دارند كه معروف ترين آنها عبارتند از Borland JBuilder، Eclypse و Netbeans.
من تست برنامه هاي اين وبلاگ را اغلب با نسخه j2sdk1.4.2_06 جاوا و NetBeans IDE 5 انجام داده ام كه آن هم از سايت NetBeans قابل download است.
نكته ديگر اينكه در اين وبلاگ قصد ندارم سينتكس جاوا را آموزش دهم. در صورتي كه با ++C آشنايي داشته باشيد، قالب اصلي دستورات جاوا را مشابه آن خواهيد يافت و مشكلي با آن نخواهيد داشت. اما به همراه مثال ها ، سعي مي كنم در مورد توابع و كلاس هاي خاصي كه استفاده مي شوند توضيح مناسبي بدهم.
mahyar_ev | 03:48 PM | Comment(s)(2)
كلياتي از جاواMay 20, 2007 02:12 PM
وقتي كه سالها پيش تازه جاوا اسم در كرده بود، از اين و آن درباره اش مي پرسيدم. جوابي كه اغلب مي شنيدم اين بود كه جاوا زباني است شبيه ++C با همان syntax ، اما با يك تفاوت مهم. اينكه روي انواع سيستم عامل ها قابل اجرا است. بدين ترتيب كه كدهاي نوشته شده توسط جاوا ابتدا به Byte Code تبديل مي شوند و سپس Byte Code ها توسط نرم افزاري به نام Java Virtual Machine به زبان ماشين ترجمه و اجرا مي شوند.
علي رغم پيچيدگي نگارش برنامه هاي جاوا، اين زبان با توجه به قابليت هايش رفته رفته توسعه يافت. بطوري كه در اغلب كاربردهاي نرم افزاري وارد شد و در بعضي از آنها بي رقيب شد. با زبان جاوا انواع سيستم هاي نرم افزاري اعم از Desktop Applications، Web Applications، Web Services، Mobie Programming ، Game Programming و غيره را مي توان پياده سازي نمود.
در سال هاي اخير چيزي كه از اين زبان مي بينيم فقط يك syntax نيست. بلكه مجموعه اي است از اصطلاحات، تكنولوژي ها و معماري هاي گوناگون. وقتي خواستم آشنايي با جاوا را شروع كنم تا مدت ها گيج بودم كه جاوا چيست و مرزهاي آن كجاست. هنوز هم كاملا قضيه برايم روشن نيست. اما با اين حال كمي ذهنم نسبت به جاوا بازتر شده است. اين را مديون كتابي هستم كه خواندم:
Java/J2EE Job Interview Companion,By K.Arulkumaran
اين كتاب همه مفاهيم اصلي جاوا را بررسي كرده و مرزهاي آن را مشخص نموده. ضمن اينكه در مورد هر يك از مفاهيم، توضيحاتي ساده و كافي داده است كه ذهن را كاملا نسبت به موضوع، روشن مي كند. خواندن اين كتاب را كه ويرايش جديدش نيز منتشر شده ،شديدا توصيه مي كنم . بسياري از مطالب آتي اين وبلاگ از اين كتاب برداشت خواهد شد.
mahyar_ev | 02:12 PM | Comment(s)(1)
سخن اولMay 19, 2007 10:23 AM
شايد فكر كنيد كسي كه وبلاگي با همچين موضوعي راه مي اندازد بايد خيلي با سواد باشد. خب، از همين اول بايد بگويم كه اشتباه مي كنيد. درست است كه من برنامه نويسم و تجربه ام هم كم نيست. اما در جاوا يك تازه كارم و بيشتر دنبال اين هستم كه چيزي ياد بگيرم. دليل اول و اصلي ام نيز از راه اندازي اين وبلاگ همين است. ياد استاد عزيزم در دانشگاه به خير كه مي گفت بهترين راه ياد گرفتن، ياد دادن است. اين وبلاگ را به چند دليل شروع كرده ام:
1- انگيزه اي باشد براي بيشتر و عميق تر خواندن مسائل مربوط به جاوا
2- ثبت و نگهداري آنچه مي خوانم
3- به اشتراك گذاشتن خوانده هايم، به اين اميد كه شايد روزي به درد كسي بخورد.
در مورد مطالبي كه ارائه خواهد شد، فرض بر اين است كه خوانندگان با اصول و اصطلاحات اصلي برنامه نويسي آشنايي دارند. لذا برخي از موارد شناخته شده در اين حوزه، ديگر تعريف نمي شوند.
ضمنا از دوست بسيار عزيزم، آقاي مهندس واحد بخاطر فضايي كه در اختيارم گذاشته اند و همينطور آماده سازي و طراحي اين صفحه، تشكر مي كنم.