PDA

View Full Version : مبتدی: مزایای استفاده از کلاس



Arcsinos
شنبه 30 بهمن 1389, 21:18 عصر
سلام
ای یه برنامه ای که توسط کلاسها دو تا عدد کسری رو میگره و با هم جمع میکنه . سوالم اینه که اگه ما این برنامه رو با استفاده از یه تابع معمولی مینوشتیم هم راحت تر بود و هم کوتاحتر . چه دلیلی وجود داره که باید از کلاس استفاده کنیم .
یا اگه میشه یه برنامه ای بدید که کاربرد کلاس رو خیلی خوب نشون بده . برنامه ای که نشه اون رو با توابع معمولی پیاده سازی کرد .

// Class.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream"
#include "conio.h"

using namespace std;

class kasri
{
int s;
int m;
public:
kasri(int x=0,int y=1){s=x;m=y;}
~kasri(){cout<<"\ndeleted!";}
void make(int x,int y){s=x;m=y;};
void add(kasri y);
};

void kasri::add (kasri y)
{
int a,b;
a=s*y.m+m*y.s;
b=m*y.m;
cout<<"\nnamayeshe kasri= "<<a<<"/"<<b;
cout<<"float is= "<<(float)a/b;
}
int _tmain(int argc, _TCHAR* argv[])
{
kasri x(2,5);
kasri y(5,2);
x.add(y);
getch();
return 0;
}

Salar Ashgi
یک شنبه 01 اسفند 1389, 00:24 صبح
دوست عزیز ، پیشنهاد میکنم حتما در مورد فلسفه ایجاد شی گرایی و زبانهای شی گراء مطالعه ای داشته باشید .
در مورد مثال شما ، هر چند زیاد ممکن است مساله پیچیده ای نباشد ، ولی شی گرایی خیلی توسعه و انعطاف کار را
افزایش میدهد . بعنوان مثال ، شما فرض کنید میخواهید معکوس (حاصلجمع دو عدد کسری) را محاسبه کنید ، در حالت
برنامه نویسی structural (ساخت یافته) باید تعدادی زیادی متغیر تعریف نموده و تابعی صرف همین کار تعریف کنید ، حال
آنکه در OOP شما با همون متودهای کلاس تون براحتی اینکار رو انجام می دید (و البته خیلی کارهای بیشتر)
در ضمن بحث OOP صرفا در همین مباحث خلاصه نمیشه ، عرض کردم باید کمی مطالعه داشته باشید
تا اشراف بیشتری بر موضوع پیدا کنید .

موفق باشید ./

yaseriran
یک شنبه 01 اسفند 1389, 00:40 صبح
درود!

من یه تعریفی یادم است که از یک کتاب uml خونده بودم از کلاس و هنوز تو ذهنمه؛ این بود که:

شما دریا رو در نظر بگیر ید، حالا کلاس می یاد این دریا رو شبکه شبکه می کنه، یعنی اینکه اگر برنامه شما مشکلی داشت، به راحتی نقطه مشکل رو میشه پیدا کرد.
در یک مثال کوچکتر، اگر ما یک استخر رو در نظر بگیریم و در آن استخر سنگی بیندازیم ، موج آب کل استخر را فرا می گیرد. حال اگر این استخر شبکه شبکه شده باشد(همان کلاس) و در آن سنگی بیندازیم، فقط همان شبکه یا نقطه را موج فرا میگیرد و به را حتی می توان آن نقطه را پیدا کرد.

البته این فقط فلسفه کلی کلاس بندی بود و تعریف خصوصیاتی مانند ارث بری و ... نبود.

امیدوارم سخن بیهوده نگفته باشم...



ای در میان جانم جان از تو بی خبر * از تو جهان پر است و جهان از تو بی خبر
چون پی برد به تو دل و جانم که جاودان * در جان و در دلی، دل و جان از تو بی خبر...عطار

هم دانشگاهی
یک شنبه 01 اسفند 1389, 06:36 صبح
سلام !

در برنامه نویسی شی گرا شما یک نوع جداید بوجود می آورید . یعنی در کنار انواعی مانندint , float , char , . . .
شما یک نوع تعریف کاربری هم بوجود می آورید مثلا نوع کسر . از حالا به بعد هر وقت خواستید از توابع کسر استفاده کنید از نوع کسسر یک شی تعریف می کنید و به کمک اون شی از توابع کلاس کسر استفاده می کنید !

هم چنین در برنامه نویسی شی گرا امکان برقراری ارتباطی مفهومی بین توابع و متغیر ها بوجود می آید که برقراری همین ارتباط در برنامه نویسی ساخت یافته مستلزم استفاده از متغیر های سراسری می باشد ( متغیرهای سراسری هم که مشکلات خاص خودشون رو دارند )

و باز در برنامه نویسی شی گرا از بسیاری از کدنویسی های خسته کننده و تکراری جلوگیری میکند !

و همچنین می توانیم سطح دسترسی متدها رو نیز تعریف کنیم که مثلا توسط سایر توابع دچار تغییر نشوند .

حالا با وجود برنامه نویسی ساخت یافته و شی گرا شما باز هم مختارید از هر کدوم که خواستید استفاده کنید!

موفق باشید !