فكرة! في كتابة الجافا 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

وسوم: , , , ,

التعليقات 6 على “فكرة! في كتابة الجافا OOP ـ set, get أسهل عند إعادة إستخدام الكود.”

  1. فردوس علق:

    سبق و أن درست الـOOP في ++c

    سبحان الله كانت أول مادة برمجية كرهتها !!

    كوني دائماً استمتع بلغات البرمجة .

  2. عمر الدليمي علق:

    تعقيب على [فردوس]:

    سبق و أن درست الـOOP في ++c

    أنا درست الoop أول مرة بالسي++ .. وسأدرسها بالجامعة بلغة جافا..
    إنصحكِ بإعادة دراستها من مصادر أخرى فهي مادة ضرورية لطالب علم الحاسوب :) .

    كوني دائماً استمتع بلغات البرمجة .

    هذا أمر مبشر :) … لكِ مستقبل إن شاء الله!

  3. hassan علق:

    atlobo minkom an tisa3idouni fi ta3lim kol mayata3ala9o bilhasoub wa lakom mini jazila achokr

  4. ابن فلسطين علق:

    يسلمو ع الشرح … مشكور اخوي وبارك الله فيك

  5. عصام الشحات علق:

    انا دخلت الموقع تايه وطالع منه وكلى اراده انى اتعلم حاجه لكن انا متأكد انى بكره هنسى واحاول ادور على اى حاجه اعملها غير انى اقرأ حاجه قرأتها قبل كده اسف العيب عندى انا

  6. عمر الدليمي علق:

    @عصام الشحات:

    انا دخلت الموقع تايه وطالع منه وكلى اراده انى اتعلم حاجه لكن انا متأكد انى بكره هنسى واحاول ادور على اى حاجه اعملها غير انى اقرأ حاجه قرأتها قبل كده اسف العيب عندى انا

    لا مشكلة أخي الكريم إن لم تفهم فهذا الموضوع متخصص برمجياً، وكي تفهم المطلوب عليك أن تدرس لغة جافا وهذا عادة ما يدرسه طلاب تقنية المعلومات/قسم علم الحاسوب، فلا تبتأس إن لم تستفد منها شيئاً فهذا متوقع.

أضف تعليقاً

لتعرف كيفية وضع الإبتسامات داخل التعليق إضغط هنا