فهرس المقرر
تدريب عملي

التدريب العملي 10: تغليف كلاس المستخدم

تطبيق الخطوات أعلاه على مشروع lab10.

class User - passwordمخفية + get()+ set() الوصول عبر دوال عامة بشروط

من الدرس 7. التغليف Encapsulation · كل التدريبات

١نص المسألة

طبّق التغليف على كلاس User: اجعل username و password من نوع private، واكتب لهما دوال get و set. دالة setUsername ترفض أي اسم يحتوي على =، ودالة setPassword تقبل فقط كلمة مرور طولها من 6 إلى أقل من 30 حرفًا.

٢الخوارزمية المقترحة

  1. عرّف الخاصيتين private.
  2. ولّد get و set من Insert Code‏ ← ‏Getter and Setter.
  3. setUsername: إذا كان username.contains("=") اطبع رسالة خطأ، وإلا احفظ القيمة.
  4. setPassword: إذا كان الطول >= 6 و < 30 احفظ القيمة، وإلا اطبع رسالة خطأ.
  5. في Main جرّب user1 بقيم غير صالحة، و user2 بقيم صالحة، واطبع القيم بدوال get.

٣خطوات التطبيق

في NetBeans

  1. أنشئ مشروع lab10 وكلاس User بخاصيتين public.
  2. Insert Code‏ ← ‏Getter and Setter‏ ← ‏حدّد الكل‏ ← ‏فعّل Encapsulate Fields‏ ← ‏Generate.
  3. عدّل setUsername و setPassword بإضافة الشروط.
  4. اكتب Main ونفّذ.

في OneCompiler

  1. افتح OneCompiler من زر «▶ شغّل المشروع» أسفل الحل، أو من موقع onecompiler.com/java.
  2. في OneCompiler تُكتب كل الكلاسات في ملف واحد Main.java؛ زر التشغيل يجمعها لك تلقائيًّا.
  3. إذا كان البرنامج يقرأ من لوحة المفاتيح، فاكتب المدخلات في خانة STDIN التي تظهر تحت الكود في محرّر OneCompiler، ثم اضغط Run.

٤المخرجات المطلوبة

نفّذ برنامجك، ويجب أن تظهر المخرجات التالية:

Output – (run)×
run:
Error: username cannot contain an equals sign (=)
Error: password must be 6-30 characters long
username: null
password: null
username: med88
password: tu88tu
BUILD SUCCESSFUL (total time: 0 seconds)

٥الحل المقترح

حاول بنفسك أولًا، ثم قارن حلّك بالحل المقترح (كود التدريب من مذكرة العملي):

👁 اعرض الحل المقترح
package lab10;public class User {    private String username;    private String password;     public String getUsername() {        return username;    }     public void setUsername(String username) {        if (username.contains("=")) {            System.out.println("Error: username cannot "                    + "contain an equals sign (=)");        } else {            this.username = username;        }    }     public String getPassword() {        return password;    }     public void setPassword(String password) {        if (password.length() >= 6 && password.length() < 30) {            this.password = password;        } else {            System.out.println("Error: password must be "                    + "6-30 characters long");        }    }}
package lab10;public class Main {    public static void main(String[] args) {        User user1 = new User();        user1.setUsername("abc=856");        user1.setPassword("a123b");        System.out.println("username: " + user1.getUsername());        System.out.println("password: " + user1.getPassword());         User user2 = new User();        user2.setUsername("med88");        user2.setPassword("tu88tu");         System.out.println("username: " + user2.getUsername());        System.out.println("password: " + user2.getPassword());    }}
مخطط المشروع مستخرج من الكود. انقر على أي كلاس لفتح كوده.
UserMain
User- username : String- password : String+ getUsername() : String+ setUsername(username : String) : void+ getPassword() : String+ setPassword(password : String) : voidMain+ main(args : String[]) : void

ملفات المشروع في تبويبات كما في NetBeans. زر التشغيل يجمعها في ملف واحد ليعمل على OneCompiler.

Output – lab10 (run)×
run:
Error: username cannot contain an equals sign (=)
Error: password must be 6-30 characters long
username: null
password: null
username: med88
password: tu88tu
BUILD SUCCESSFUL (total time: 0 seconds)

أسئلة المناقشة

أسئلة مناقشة على التدريب 10. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) في الكود السابق، لماذا عرّفنا المتغيرات username و password بأنها private؟
2) ما وظيفة دوال setUsername و setPassword في الكلاس User؟
3) إذا حاولنا وضع "=" داخل username، ماذا سيحدث؟
4) ما هو الشرط لقبول كلمة المرور (password)؟ التي في هذا التدريب
5) عند استدعاء getUsername()، ماذا يحدث؟
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».