فكرة! في كتابة الجافا OOP ـ set, get أسهل عند إعادة إستخدام الكود.
هذا الكود، المطلوب أن تفهمه أنني علمت نفس الطريق (Method) لكل خاصية بنفس الإسم. يعين الخاصية أسميها (pX) وإسم الطريقين (Method) هما x الأول وهو Getter ومن نوع القيمة التي يضعها مثل int, char, double أو أي كان!. والثاني وهو الـ Setter وهو من نوع الكائن نفسه حيث أنه يحتوي على جملة Return ترجع نفس الكائن بواسطة this. وكذلك يسند القيمة الممررة إليه إلى الخاصية (Properties) المطلوبة وفي هذه الحالة x.
في هذه الحالة يجب أن تعلم أنني عملت Overload لكل طريق (Method) مرتين الأول بشكل Setter والثاني Getter!
حمل الكود بملف جافا من هنا BetterGetterAndSetter.java
(الكود هنا ملون لكن إن اردت الكود كاملاً بشكل ملف جافا حمله وإفتحه بمحررك المفضل مثل Eclipse, NetBeans, NotePadpp
/* Better OOP by making cleaner Setter, Getter! For eazier programming. Copyright (C) 2009 Omar Al-Dolaimy (http://www.omardo.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ import java.util.*; public class ReturnThis { public static void main (String args[]) { Scanner scan = new Scanner( System.in ); // تعريف الكائن Dot3D someDot = new Dot3D(); // SETTERS // إسناد قيمة س، ص بالطريقة المختصرة //c وهي أشبه بالطريقة القديمة لحد الآن someDot.x(10); someDot.y(20); // أنظر هذا الإختصار أليس أفضل؟ someDot.x(20).y(120); // أو هذا someDot.z(10).x(24).y(10).x(20); // وأنظر الآن جمال الفكرة! أن // Setter looks like getter! // GETTERS! int a = someDot.x(); /* // الفرق بينهما أن عند إسناد قيمة يجب أن تمررها داخل الطريق (ميثود)ـ // أما عند طلب الحصول على القيمة ببساطة! // لا تمرر وسيط (بارميتير) وتحصل على القيمة الحالية لها // // Getters After Setter! // تستطيع المزج في الأمر الواحد بين عدة مسندات (سيتير) وفي النهاية محصل واحد (كيتر) أنظر التالي: */ int num = someDot.x(20).y(50).z(); // في هذه الحالة نحن نسند قيمة لكل من س، ص وبعدها نأخذ قيمة ع ونضعها في المتغير (نام)ـ // // هذا مثال لطباعة قيم س، ص، ع للكائن. الكود // نظيف وبسيط وواضح! System.out.println("X: " + someDot.x() + ", Y: " + someDot.y() + ", Z: " + someDot.z() ); } } class Dot3D { // Properties || Dimentions private int pX=0, pY=0, pZ=0; // Setter's public Dot3D x(int val) { pX = val; return this; } public Dot3D y(int val) { pY = val; return this; } public Dot3D z(int val) { pZ = val; return this; } // Getter's public int x() { return pX; } public int y() { return pY; } public int z() { return pZ; } } /* // OLD WAY TO SET, GET! // Set values someDot.setX(10); someDot.setY(13); someDot.setZ(48); // Print them System.out.println("X: " + someDot.getX() + ", Y: " + someDot.getY() + ", Z: " + someDot.getZ() ); */
——————————
أو حمل الكود بملف جافا من هنا BetterGetterAndSetter.java
روابط مفيدة:
صفحات: 1 2

11 يناير 2009 في الساعة 11:05 ص
سبق و أن درست الـOOP في ++c
سبحان الله كانت أول مادة برمجية كرهتها !!
كوني دائماً استمتع بلغات البرمجة .
11 يناير 2009 في الساعة 4:59 م
تعقيب على [فردوس]:
أنا درست الoop أول مرة بالسي++ .. وسأدرسها بالجامعة بلغة جافا..
.
إنصحكِ بإعادة دراستها من مصادر أخرى فهي مادة ضرورية لطالب علم الحاسوب
هذا أمر مبشر
… لكِ مستقبل إن شاء الله!
24 فبراير 2009 في الساعة 12:09 ص
atlobo minkom an tisa3idouni fi ta3lim kol mayata3ala9o bilhasoub wa lakom mini jazila achokr
15 مارس 2009 في الساعة 5:12 م
يسلمو ع الشرح … مشكور اخوي وبارك الله فيك
19 أبريل 2009 في الساعة 2:49 ص
انا دخلت الموقع تايه وطالع منه وكلى اراده انى اتعلم حاجه لكن انا متأكد انى بكره هنسى واحاول ادور على اى حاجه اعملها غير انى اقرأ حاجه قرأتها قبل كده اسف العيب عندى انا
20 أبريل 2009 في الساعة 4:38 م
@عصام الشحات:
لا مشكلة أخي الكريم إن لم تفهم فهذا الموضوع متخصص برمجياً، وكي تفهم المطلوب عليك أن تدرس لغة جافا وهذا عادة ما يدرسه طلاب تقنية المعلومات/قسم علم الحاسوب، فلا تبتأس إن لم تستفد منها شيئاً فهذا متوقع.