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

Programmer Tech

تعلم البرمجة - علوم الكمبيوتر - أمن المعلومات - القرصنة الأخلاقية

إعلان اعلى المقالة

الاثنين، 29 مارس 2021

تطبيقات على كيفية التعامل مع الكلاسات 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 من أجل الطلب من المستخدم كل مرة بأن يضيف بيانات جديدة و يتم تسجيلها في المصفوفة, و عند التشغيل لهذا البرنامج و تعبئته ببعض البيانات سيكون كما يلي

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

ليست هناك تعليقات:

إرسال تعليق

facebook

نموذج الاتصال

الاسم

بريد إلكتروني *

رسالة *