Programming -2 برمجة -2 المحاضرة-7 Lecture-7.

Slides:



Advertisements
Similar presentations
Lecture Computer Science I - Martin Hardwick Strings #include using namespace std; int main () { string word; cout
Advertisements

Pass by Value. COMP104 Pass by Value / Slide 2 Passing Parameters by Value * A function returns a single result (assuming the function is not a void function)
Chapter 6 Advanced Function Features Pass by Value Pass by Reference Const parameters Overloaded functions.
EC-241 Object-Oriented Programming
Chapter 8 Scope, Lifetime and More on Functions. Definitions Scope –The region of program code where it is legal to reference (use) an identifier Three.
Derived Classes. C++ 2 Outline  Definition  Virtual functions  Virtual base classes  Abstract classes. Pure virtual functions.
C++ Classes & Data Abstraction
1 Class Vehicle #include #define N 10../.. 2 Class Vehicle class vehicle { public: float speed; char colour[N+1]; char make[N+1];
Tinaliah, S. Kom.. * * * * * * * * * * * * * * * * * #include using namespace std; void main () { for (int i = 1; i
Triana Elizabeth, S.Kom. #include using namespace std; void main () { for (int i = 1; i
PASSING PARAMETERS 1. 2 Parameter Passing (by Value) Parameters Formal Parameters – parameters listed in the header of the function Variables used within.
#include using namespace std; void main() { int a[3]={10,11,23}; for(int i=0;i
Class template Describing a generic class Instantiating classes that are type- specific version of this generic class Also are called parameterized types.
General Computer Science for Engineers CISC 106 Lecture 34 Dr. John Cavazos Computer and Information Sciences 05/13/2009.
1 Writing a Good Program 5. Objects and Classes in C++
Functions Pass by Reference Alina Solovyova-Vincent Department of Computer Science & Engineering University of Nevada, Reno Fall 2005.
Engineering H192 - Computer Programming The Ohio State University Gateway Engineering Education Coalition Lect 24P. 1Winter Quarter C++ Lecture 24.
CS1201: Programming Language 2 Classes and objects By: Nouf Aljaffan Edited by : Nouf Almunyif.
11 Introduction to Object Oriented Programming (Continued) Cats.
Object Oriented Programming (OOP) Lecture No. 11.
CSC241 Object-Oriented Programming (OOP) Lecture No. 6.
CSC241 Object-Oriented Programming (OOP) Lecture No. 4.
Tracing through E01, question 9 – step 1 // p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include using namespace std; void mysteryFunction(int.
C++ Programming Lecture 11 Functions – Part III By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
SNPL1 Woochang Lim C+OOP = C++ C (non OOP)  C++ (non OOP+OOP)  Java (OOP) Object-Oriented Design  Object-Oriented Programming Programming with C++
1 More Operator Overloading Chapter Objectives You will be able to: Define and use an overloaded operator to output objects of your own classes.
Exceptions in C++. Exceptions  Exceptions provide a way to handle the errors generated by our programs by transferring control to functions called handlers.
Modular Programming – User Defined Functions. CSCE 1062 Outline  Modular programming – user defined functions  Value returning functions  return statement.
FUNCTIONS - What Is A Function? - Advantages Function Declaration
Introduction to Programming Lecture 40. Class Class is a user defined data type.
11 Introduction to Object Oriented Programming (Continued) Cats.
Lecture #6 Classes and Objects.
1 Compiler directive: #define, usage 1 #include using namespace std; #define TAX //double TAX=0.08; #define LAST_NAME "Li" #define FIRST_NAME "Dennis"
Structure A Data structure is a collection of variable which can be same or different types. You can refer to a structure as a single variable, and to.
Current Assignments Project 3 has been posted, due next Tuesday. Write a contact manager. Homework 6 will be posted this afternoon and will be due Friday.
Computer Programming II Lecture 4. Functions - In C++ we use modules to divide the program into smaller and manageable code. These modules are called.
C++ Programming Lecture 13 Functions – Part V By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
Introduction to C++ programming Recap- session 1 Structure of C++ program Keywords Operators – Arithmetic – Relational – Logical Data types Classes and.
1 C++ Classes and Data Structures Course link…..
Fucntions in C++ Malik Jahan Khan
Overloaded Constructors and Multiple Classes
#define #include<iostream> using namespace std; #define GO
Institute of Business & Technology (BIZTEK)
CS3340 – OOP and C++ L. Grewe.
CS1201: Programming Language 2
group work #hifiTeam
Static Data Member and Functions
Lecture 4-7 Classes and Objects
Lecture 8 – 9 Arrays with in a class
Dynamic Memory Allocation Reference Variables
Programming -2 برمجة -2 المحاضرة-5 Lecture-5.
Extra.
Contents Introduction to Constructor Characteristics of Constructor
Introduction to Programming
Pointers & Functions.
Introduction to Programming
Local Variables, Global Variables and Variable Scope
CSC 270 – Survey of Programming Languages
Introduction to Programming
Object oriented programming (OOP) Lecture No. 7
Introduction to Programming
CS1201: Programming Language 2
foo.h #ifndef _FOO #define _FOO template <class T> class foo{
Pointers & Functions.
Object Oriented Programming (OOP) Lecture No. 11
CS1201: Programming Language 2
Types of Computer Languages
Reading from and Writing to Files Part 2
Introduction to Algorithms and Programming COMP151
Object Oriented Programming (OOP) Lecture No. 12
Presentation transcript:

Programming -2 برمجة -2 المحاضرة-7 Lecture-7

Classes & Objects الفئات والكائنات

المحتويات مقدمة الفئة (Class) وكيفية الإعلان عنها الكائنات Objects)) محددّات الوصول: public & private أساليب الوصول: دوال set & get دوال البناء والهدم

مقدمة تعرفنا في السابق على أنواع عديدة من المتغيرات, مثل الأعداد الصحيحة (int & long), الأعداد العشرية (float & double), الحروف (char), وغيرها ... تخبرنا أنواع المتغيرات عن حجمها في الذاكرة, المعلومات التي تخزنها, الإجراءات والعمليات التي يمكن أن تُجرى عليها بصفة عامة, النوع يمثل إحدى الفئات (class) نستطيع إنشاء أنواع جديدة لحل المشكلات, وهذه هي البرمجة الموجهة الكائنية أو البرمجة باستخدام الكائنات (Object Oriented Programming)

البرمجة الموجهة الكائنية Object Oriented Programming (OOP) يُطلق عليها برمجة كائنية أو غرضية الهدف أو هدفية أو شيئية هي برمجة تقوم باستخدام الكائنات(objects) في كتابة الكود/البرنامج الفئة(class) عبارة عن مجموعة من الكائنات المتشابهة في الصفات والسلوك الكائن(object) يتكون من: صفات(attributes) أو متغيرات(variables) سلوك(behavior) أو دوال(functions) الكائن(object) عبارة عن نسخة أو حالة مستقلة من الفئة(class)

مثال: السيارة يُمكن التفكير في السيارة على أنها مجموعة من الأبواب, والمقاعد, والنوافذ, وغيرها ... وبطريقة أخرى يُمكن التفكير فيها من خلال معرفة ما يُمكن للسيارة عمله: يُمكنها أن تتحرك, وزيادة سرعتها, وتقليلها, والتوقف, وغيرها ... تُتيح لك الفئة(class) كبسلة أو تجميع هذه الأجزاء والإجراءات في مجموعة واحدة فوائدها للمبرمج: كل شئ في مكان واحد, مما يُسهل من الإشارة للبيانات, ونسخها, ومعالجتها

الفئة Class تتكون الفئة(class) من مجموعة من الصفات والسلوك الصفات تمثّل المتغيرات, والسلوك يمثّل الدوال بالنسبة لفئة السيارة: صفات السيارة مثل المقاعد, الإطارات, لون السيارة, وغيرها ... سلوك السيارة مثل التشغيل, التوقف, الحركة, زيادة السرعة, وغيرها ...

الإعلان عن الفئةDeclaration Class بشكل عام class class_name { data_type member1; // صفة أو متغير data_type member2; // صفة أو متغير data_type function_name(); // سلوك أو دالة . }; مثال(1) : فئة السيارة class Car { int seat; // صفة أو متغير int wheel; // صفة أو متغير int color; // صفة أو متغير void start(); // سلوك أو دالة void stop(); // سلوك أو دالة int increaseSpeed(); // سلوك أو دالة };

الإعلان عن الفئةDeclaration Class مثال (2): فئة القطة class Cat { int age; // صفة أو متغير int weight; // صفة أو متغير int color; // صفة أو متغير void meow(); // سلوك أو دالة void sleep(); // سلوك أو دالة void chaseMice(); // سلوك أو دالة };

تعريف الكائنInitialization Object مثال: تعريف الكائن Friskyوالذي ينتمي إلى الفئة Cat Cat Frisky; كما ذكرنا سابقاً: الكائن(object) هو نسخة أو حالة مستقلة من الفئة(class) بمعنى أنه يمكننا تعريف العديد من الكائنات وينتمون إلى نفس الفئة

الوصول إلى صفات وسلوك الفئة بمجرد تعريفك لكائن من الفئة, (مثلا الكائن Frisky من الفئة Cat), ستستخدم النقطة (.) للوصول إلى صفات وسلوك(متغيرات ودوال) هذا الكائن(object) وبنفس الطريقة, لاستدعاء السلوك(الدالة) meow( ) مثال: تعيين القيمة 50 للصفة(المتغير)weight الخاص بالكائن Frisky Frisky.weight = 50; Frisky.meow();

مثال عام: يوضح كيفية كتابة الفئة(class) وتعريف كائن(object) #include<iostream> using namespace std; class Cat // إعلان عن فئة { int age; // صفة أو متغير int weight; // صفة أو متغير int color; // صفة أو متغير void meow(); // سلوك أو دالة void sleep(); // سلوك أو دالة void chaseMice(); // سلوك أو دالة }; void main() Cat Frisky; // تعريف كائن system("pause"); }

محددّات الوصول Access Specifiers: public & private محددّات الوصول تمكّن المبرمج من تحديد مدى التعامل مع أعضاء الفئة (الصفات والسلوك) بمعنى آخر, بالإمكان تحديد إمكانية الوصول واستخدام أعضاء الفئة في البرنامج تأخذ كافة أعضاء الفئة – الصفات والسلوك – المحدّد خاص(private) افتراضيا الأعضاء الخاصة(private) يمكن الوصول إليها من خلال سلوك(دوال) الفئة فقط, أما الأعضاء العامة(public) فيمكن الوصول إليها من أي مكان خارج الفئة

تابع .. مثال: فئة القطة class Cat { int age; // صفة أو متغير int weight; // صفة أو متغير void meow(); // سلوك أو دالة }; في هذا الإعلان, تأخذ الصفتين والسلوك المحددّ الخاص(private) افتراضيا فإذا كتبنا التالي داخل الدالة الرئيسية main : خطأ بسبب أن محدّد الصفة age هو خاص(private) Cat Boots; Boots.age = 5; //error! Can’t access private data!

تابع .. الطريقة التي يمكنك بها استخدام الفئة Cat بحيث تستطيع الوصول إلى الصفات والسلوك(المتغيرات والدوال): أصبحت الآن جميع الصفات والسلوك عامة بعد إضافة public: class Cat { public: int age; // صفة أو متغير int weight; // صفة أو متغير void meow(); // سلوك أو دالة };

مثال: الوصول إلى الصفات والسلوك وجعلها عامة في الفئة Cat #include<iostream> using namespace std; class Cat { public: int age; int weight; }; void main() Cat Frisky; Frisky.age = 5; cout<< "Frisky is a cat, its age is: " << Frisky.age << endl; system("pause"); } Frisky is a cat, its age is: 5

ملاحظات يُفضّل أن يبدأ اسم الفئة بحرف كبير (Cat, Car, Student, …) يجب أن تُكتب الفئة(class) قبل الدالة الرئيسية main يتم تعريف الكائن(object) داخل الدالة الرئيسية main الصفات والسلوك الموجودة في الجزء الخاص( (privateلا يمكن استخدامها خارج الفئة(class) (يمكن الوصول إليها من خلال سلوك أو دوال الفئة فقط) الصفات والسلوك الموجودة في الجزء العام( (publicيمكن استخدامها من أي مكان خارج الفئة (من أي مكان بالبرنامج) في حالة عدم ذكر public أوprivate فإن الحالة الإفتراضية هي private

كيفية الوصول إلى أعضاء المحدّد الخاص((private كقاعدة عامة في كتابة الفئات, يجب عليك الإحتفاظ بـ صفات(متغيرات) الفئة(class) كبيانات خاصة(private) وعدم جعلها عامة(public) لذلك سنضطر إلى إنشاء دوال من أجل إحضار وتعيين قيمة الصفات(المتغيرات) الخاصة الدوال هما: set: تستخدم لـ تعيين قيم الصفات(المتغيرات) get: تستخدم لـ إعادة قيم الصفات(المتغيرات)

مثال: برنامج لـ مستشفى لنفرض أننا نكتب برنامج لـ مستشفى حجز وحذف موعد إضافة وحذف مريض إضافة موظف والراتب بيانات موظف بيانات مريض بيانات موعد

فئة(class) الموظفين

هذا البرنامج يحتوي على خطأين: لا يمكن الوصول إلى الصفات المعرّفة داخل الفئة staffلأنها private

أي شئ يتبع الكلمة publicيمكن الوصول إليه من أي مكان خارج الفئة

أي شئ يتبع الكلمة privateيمكن الوصول إليه من خلال دوال الفئة فقط أي شئ يتبع الكلمة publicيمكن الوصول إليه من أي مكان خارج الفئة

استخدام دوال set & get لديك الصفات الخاصة التالية .. كم دالة تحتاجين؟

إنشاء دوال set & get دالة set: دالة get: لكل صفة(متغير): يتم إضافة هذه الدوال في جزء public دالة set: نوع بياناتها المُسترجعة void لها parameter من نفس نوع الصفة يُكتب داخلها تعيين قيمة الصفة إلى الـ parameter دالة get: نوع بياناتها المُسترجعة يعتمد على نوع الصفة ليس لها parameter يُكتب داخلها return لـ الصفة

إنشاء دوال get للصفات الثلاثة

إنشاء دوال set للصفات الثلاثة

دوال البناء والهدم دالة البناء: هي دالة تُستخدم لإعطاء قيم ابتدائية لـ صفات(متغيرات) الفئة يجب أن تُكتب بنفس اسم الفئة لا تُعيد بيانات أو قيم وليست void أيضًا طريقة كتابة دالة البناء: موضحة في السلايد القادم دالة الهدم: هي دالة تُستخدم للتخلص من الكائنات وتحرير الذاكرة طريقة كتابة دالة الهدم: ~staff() { }

مثال: استخدام دالة البناء staffName raha 123 4343434