لغات برمجة ١ - المحاضرة الثالثة PDF
Document Details
Uploaded by DynamicNash3049
الجامعة الوطنية الخاصة
د. لينا مراد
Tags
Summary
هذه محاضرة عن لغات البرمجة باللغة Java، تركز على البواني (Constructors) في جافا، وتشمل أمثلة توضيحية. تُقدم المحاضرة طرقًا للوصول إلى المتغيرات الساكنة (static) والطرق الساكنة (static methods) في جافا.
Full Transcript
# لغات برمجة ١ ## المحاضرة الثالثة د. لينا مراد ## البواني في جافا Java Constructors - الباني هو نوع خاص من الطرق هو (تابع) يُستخدم لتهيئة الكائن وإعطاء قيم أولية للكائن عند إنشائه. - له نفس اسم الصف. - لا يحتوي على قيمة معادة ولا حتى void. - تحتوي جميع الصفوف على باني افتراضي يقوم بتهيئة جمي...
# لغات برمجة ١ ## المحاضرة الثالثة د. لينا مراد ## البواني في جافا Java Constructors - الباني هو نوع خاص من الطرق هو (تابع) يُستخدم لتهيئة الكائن وإعطاء قيم أولية للكائن عند إنشائه. - له نفس اسم الصف. - لا يحتوي على قيمة معادة ولا حتى void. - تحتوي جميع الصفوف على باني افتراضي يقوم بتهيئة جميع المتغيرات الأعضاء إلى القيم الافتراضية. ولكن بمجرد تعريف باني ضمن الصف، لم يعد الباني الافتراضي موجوداً. ## مثال: ```java class Student { private int id; private String name; private int yearOfBirth; public Student(int i, String n, int y) { id=i; name=n; yearOfBirth=y; } public void print() {System.out.println(id+" "+name+" "+yearOfBirth);} } public class Test {public static void main(String []args) {Student st=new Student(); st.print();} } public student() { id=0; name=null; yearOfBirth=0; } ``` ## مثال: - أضف للصف السابق تابع لحساب عمر الطالب حسب السنة الحالية واستدعيه في main ```java public int studentAge(int year) { return year-yearOfBirth; } ``` ```java public class Test {public static void main(String args[]) { Student st=new Student(1, "ahmad", 2004); st.print(); int age=st.studentAge(2024); System.out.println(age); }} ``` ## طرائق الوصول لمتغيرات الصف Instance Method(Setter &getter) - يمكن إضافة عدد من الطرائق الى الصف وهناك نوعان من الطرائق تسهل التعامل مع متغيرات الصف: ### طرائق الوصول getter : - تستخدم للحصول على قيمة متغير private واستخدامها خارج الصف. - هي طرائق تعيد نوع بيانات من نفس نوع المتغير. - اسم الطريقة يبدأ بالكلمة get وتسمى هذه الطرائق getters. ```java public int getId() { return id; } ``` ### طرائق التعديل : - تستخدم لتعديل قيمة متغير private - هي طرائق لا تعيد أي قيمة (void) وتأخد وسيط من نفس نوع المتغير - اسم الطريقة يبدأ بالكلمة set وتسمى هذه الطرائق setters. - يمكن إضافة شروط للتعديل. ```java public void setId(int i) { if(i>0) id = i; } ``` ## مثال: ```java package MyProject; class Student { private int id; private String name; private int yearOfBirth; public void setId(int i) { if (i > 0) id = i; } public void setName(String na) { name = na; } public void setYearOfBirth (int yr) { if (yr >= 2000 && yr <= 2004) yearOfBirth = yr; } public Student(int i, String n, int y) { id = i; name = n; yearOfBirth = y; } public void print() { System.out.println(id + " " + name + "" "" + yearOfBirth); } public Student() { id = 0; name = null; yearOfBirth = 0; } public int studentAge(int year) { return year - yearOfBirth; } } public class Test { public static void main(String args[]) { Student st = new Student(1, "ahd", 2004); st.print(); st.setId(-5); st.setName("ahmed"); st.print(); int age = st.studentAge(2024); System.out.println(age); } } ``` ## الكلمة المحجوزة static - تُستخدم الكلمة الأساسية static في Java لإدارة الذاكرة بشكل أساسي. يمكننا تطبيق الكلمة الأساسية static مع المتغيرات والطرق والكتل والفئات المتداخلة. ## : Java static variable الساكنة Java متغيرات - يمكن استخدام الكلمة static للإشارة إلى الخاصية Datamember المشتركة لجميع أغراض الصف - يتم حجز ذاكرة للمتغير الساكن مرة واحدة مهما كان عدد الأغراض المنشأة من الصف. **ملاحظة:** المتغيرات الساكنة تعطى قيمتها الابتدائية عند التصريح عنها ويمكن إضافة تابع لتعديل القيمة ولا تكون وسيط للباني. ## : Java static variable الساكنة Java متغيرات - يمكن استخدام الكلمة static للإشارة إلى الخاصية Datamember المشتركة لجميع أغراض الصف - يتم حجز ذاكرة للمتغير الساكن مرة واحدة مهما كان عدد الأغراض المنشأة من الصف. **ملاحظة:** المتغيرات الساكنة تعطى قيمتها الابتدائية عند التصريح عنها ويمكن إضافة تابع لتعديل القيمة ولا تكون وسيط للباني. ## مثال: - في معرض عدد من السيارات عرف صف سيارة يتضمن (رقم السيارة - النوع – اللون – عدد السيارات الكلي وباني للسيارة - وتابع طباعة) ```java public class Car { private int id; private String type; private String color; private static int total=0; public void print() { "" System.out.println(id+ " "+ type + + color + } } class test public Car(int i,String t,String c) { { public static void main(String[] args) { id=i; Car c1=new Car(100, "Honda", "red"); c1.print(); type=t; color=c; Car c2=new Car(250, "Kia", "black"); c2.print(); total++; } } Car c3=new Car(550, "BMW", "red"); c3.print();} } ``` ## :Java static method الساكنة Java طرائق - كل طريقة تعرف بالكلمة static بعد محدد الوصول الخاص بالطريقة نسمى طريقة ساكنة static method. - الطريقة الساكنة تنتمي إلى الصف وليس إلى أغراض الصف تغيير الغرض المستدعي للطريقة لا يغير نتيجتها) - يمكن استدعاء الطريقة الساكنة دون الحاجة إلى إنشاء غرض تستدعى باسم الصف. - يمكن للطريقة الساكنة الوصول إلى المتغيرات الساكنة وتغيير قيمتها. - لا يمكن للتابع الساكن استخدام المتغيرات غير الساكنة أو استدعاء التوابع غير الساكنة. - لا يمكن استخدام الكلمة this أو super. ## مثال: - أكتب تعريف صف لزبون بنك يتضمن (رقم الحساب - اسم الزبون – الرصيد – نسبة الفائدة ) ويتضمن بواني وتوابع setter و getter و تابع طباعة وتابع حساب قيمة الأرباح للسنة . ```java public class Account { private int num; private String name; private float balance; private static float rate=0.03f; public Account(){} public Account(int i, String n,float b) { num=i; name=n; balance=b; } public int getNum() { return num; } public void setName(String name) { this.name = name; } public void setBalance(float balance) { this.balance = balance; } public void setRate(float rate) { Account.rate = rate; } public void print() { System.out.println("Account{" + "num=" + num + ", name=" + name + ", balance=" + balance +", Rate=" + rate + '}'); } public float addBalance() public String getName() { return name; } { return balance*rate; } public float getBalance() { return balance; } public float getRate() { return rate; } public void setNum(int num) { this.num = num; } } ``` ## مثال: ```java class testAccount { public static void main(String[] args) { Account a=new Account(1,"jj",2000); a.print(); System.out.println(a.addBalance()); Account b=new Account(2, "hj",3000); b.print(); System.out.println(b.addBalance()); a.setRate(0.05f); a.print(); b.print(); } } ``` ## ملاحظة: ```java public static float getRate() { return rate; } public static void setRate(float rate) { Account.rate = rate; } } public static void setNum(int num) { this.num = num; } ``` ## مثال الكسور. ## الكلمة المحجوزة this في Java - this في Java هي متغير مرجعي يشير إلى الكائن الحالي. <start_of_image> Diagrams: Usage of Java this Keyword - A circle with 6 boxes inside of it. The boxes are labeled with the numbers 1-6; - Above the circle is the text: "Usage of Java this Keyword". - To the right of the circle is a box labeled "this" - There is a box labeled "state", nested in the "this" box. - Below the "this" box is a box labeled "reference variable". - Below the "state" box is a box labeled "behaviour". - Below the "behaviour" box is a box labeled "object". - The diagram appears to be an example explaining different usages of the "this" keyword in Java. - Inside of each of the boxes numbered 1-6 are brief, numbered descriptions of how the "this" keyword can be used in each particular situation. - For example, box number 1 states: "this can be used to refer current class instance variable". - Box number 2 states: "this can be used to invoke current class method implicitly". - Box number 3 states: "this() can be used to invoke current class Constructor". - Box number 4 states:"this can be passed as an argument in the method call". - Box number 5 states: "this can be passed as argument in the constructor call". - Box number 6 states: "this can be used to return the current class instance from the method".