recent
أخبار ساخنة

تطبيقات على كيفية التعامل مع الكلاسات classes في لغة سي بلس بلس C++ الدرس|30|

الصفحة الرئيسية

 

تطبيقات للتعامل مع الكلاس بإحترافية

في الدروس القادمة سوف نقوم بعمل بعض التطبيقات المفيدة بالكلاس Classes و سوف نقوم بشرح عمليات اكثر لكي تتمكنوا من التعامل مع الكلاسات بشكل افضل.


التطبيق الأول

انشئ كلاس لمستطيل و خصائص المستطيل هي الطول و العرض من نوع float و يجب إنشاء دالتان الأولى تقوم بإرجاع مساحة المستطيل و مساحة المستطيل هي الطول ضرب العرض و الدالة الثانية تقوم بإرجاع محيط المستطيل و محيط المستطيل يساوي إثنان ضرب الطول + العرض, و يجب علينا إنشاء دوال set و get و جميع المتغيرات تكون من نوع private و تقوم دالة set بالتأكد ما إن كانت القيمة المُدخَلة اقل او تساوي 20 و اكبر من 0 لكلا الدالتين.

سوف نستخدم الطريقة الذي إستخدمناها في الدرس السابق و هي فصل الكلاس عن main ليسهِّل علينا قراءة البرنامج, الكلاس لدينا سيكون إسمه Rectangle.

ملف main

#include <iostream>
#include "Rectangle.h"
using namespace std;
int main()
{
Rectangle rect = Rectangle(3, 2);

cout << "المستطيل طوله" <<rect.getHeight() << endl;
cout << "عرضه" <<rect.getWidth() << endl;
cout << "مساحته" <<rect.area() << endl;
cout << "محيطه" <<rect.perimeter() << endl;
return 0;
}


شرحه ما سبق لملف main

في هذا الملف فقط قمنا بإنشاء كائن rect مشتق من الكلاس Rectangle ووضعنا له القيم الطول  3 و عرضه 2 ثم وضعنا أوامر الطباعة في البداية يقوم بطباعة طول المستطيل عن طريق إستدعاء الدالة getHeight عن طريق الكائن rect و يليه طباعة عرض المستطيل عن طريق إستدعاء getWidth و ثم قمنا بالطلب منه بطباعة مساحة هذا المستطيل عن طريق area و كما نعرف بأن مساحة المستطيل هي الطول ضرب العرض ثم طلبنا طباعة محيط هذا المستطيل عن طريق perimeter و محيطه هو حاصل جمع الطول و العرض مضروب في اثنان 2.

 

ملف Rectangle.h

#ifndef RECTANGLE_H
#define RECTANGLE_H

class Rectangle{
private:
int height, width;

public:
Rectangle(int, int);

//Function
int area();
int perimeter();

//Setters
void setHeight(int);
void setWidth(int);

//Getters
int getHeight();
int getWidth();
};
#endif


شرح ما سبق لملف Rectangle.h

لقد انشأنا كلاس بإسم Rectangle و به مُتغيران من نوع int و هم للإرتفاع height و العرض width ثم انشأنا الكونستركتور من نوع public و به وضعنا مُتغيرات الدوال و هي area للمساحة و perimeter للمحيط و دوال الـ Setters للإرتفاع setHeight و للعرض setWidth و نوعهم عددية int و دوال Getters هم للإرتفاع getHeight و للعرض setWidth ثم اغلقنا الكلاس.

 

ملف Rectangle.cpp

#include "Rectangle.h"

//Function
Rectangle::Rectangle(int h, int w)
{
setHeight(h);
setWidth(w);
}
int Rectangle::area()
{
return height * width;
}
int Rectangle::perimeter()
{
return 2*(height + width);
}
//Setters
void Rectangle::setHeight(int h)
{
height = h;
}
void Rectangle::setWidth(int w)
{
width = w;
}
//Getters
int Rectangle::getHeight()
{
return height;
}
int Rectangle::getWidth()
{
return width;
}


شرح ما سبق لملف Rectangle.cpp

هُنا قمنا بوضع الكونستركتور في البداية ووضعنا الدوال التي تنتمي للكلاس و قمنا بالوصول إليها عبر إضافة إسم الكلاس و بعده نقطتين:: تعرفنا على هذا في الدرس 28 و قُمنا بتمرير setHeight عبر الحرف h و setWidth عبر الحرف w و أتينا إلى مُتغير المساحة ووضعنا له أن يقوم بإرجاع لنا الطول ضرب العرض و ثم أتينا لمتغير المحيط perimeter و طلبنا منه أن يقوم بإرجاع لنا ناتج جمع الطول و العرض مضروب بالرقم إثنان, ثم عرَّفنا دوال Setters و Getters بأن تقوم setHeight بإرجاع h و setWidth تقوم بإرجاع w و أن getHeight تقوم بإرجاع height و getWidth تقوم بإرجاع width, و عند تشغيل الكود سوف نحصل على النتيجة الآتية

 

نلاحظ من النتيجة السابقة أنه اعطانا المستطيل طوله 3 و عرضه 2 و مساحته 6 أي تعني الطول ضرب العرض و محيطه 10 و هو العرض زائد الطول ضرب 2.


التطبيق الثاني

قُم بإنشاء كلاس User بحيث يتم السماح للمستخدم بإنشاء مستخدم جديد من خلال إدخال إسم المستخدم و كلمة السر و يقوم بتسجيل هذه البيانات في مصفوفة.

#include <iostream>
using namespace std;

class User
{
private:
string username, password;
public:
void setUsername(string u)
{
username = u;
}
void setPassword(string p)
{
password = p;
}
string getUsername()
{
return username;
}
string getPassword()
{
return password;
}
};
int size = 0; //عدد المستخدمين
User users[100]; //مصفوفة بها 100 عنصر

int main()
{
string username, password;
while(true)
{
cout << "اسم المستخدم" << " ";
cin >> username;
cout << "كلمة المرور" << " ";
cin >> password;
User newUser;
newUser.setUsername(username);
newUser.setPassword(password);
users[size++] = newUser;
for(int i=0; i<size; i++)
{
cout << i << ". " << users[i].getUsername() << endl;
}
}
return 0;
}

 

شرح التطبيق السابق

انشانا كلاس بإسم User و به مُتغيران من نوع نصي و هُم لليوزرنيم username و الباسورد password و ثم قُمنا بإنشاء بعض الدوال العامة بـ Setters و هي setUsername تُمرر متغير نصي u و setPassword تُمرر متغير نصي p و دوال Getters بأن getUsername تقوم بإرجاع اليوزرنيم و setPassword تقوم بإرجاع الباسورد ثم كتبنا متغير إسمه size أي عدد المستخدمين يبدأ العد من 0 و وضعنا بأن حجم هذه المصفوفة تتسع لـ 100 يوزر ثم دخلنا للدالة main و أنشأنا حلقة تكرارية for بداخل حلقة تكرارية while من أجل الطلب من المستخدم كل مرة بأن يضيف بيانات جديدة و يتم تسجيلها في المصفوفة, و عند التشغيل لهذا البرنامج و تعبئته ببعض البيانات سيكون كما يلي

إضغط هنا للرجوع للدرس السابق

google-playkhamsatmostaqltradent