PDA

View Full Version : شی گرایی(OOP)



shayan_delphi
دوشنبه 09 آبان 1384, 06:40 صبح
بنام خدا
سلام به همه دوستان
من هرجا ebook یا مطلبی از سایتهای خارجی راجع به دلفی خواندم بدون استثنا از OOP یا همون شی گرایی صحبت شده بود حتی موضوع Net. هم با OOP به عنوان یک سیستم قدرتمند مطرح شده ولی در سایتهای فارسی و بین برنامه نویسها مخصوصا دلفی کارها خیلی کم و یا اصلا هیچ اطلاعاتی در مورد شی گرایی نیست. :ناراحت: :ناراحت: :ناراحت:
من خودم سعی می کنم اول از مزایای اون بنویسم بعدش هم روشهایی که یاد می گیرم.
از دوستانی که به این نوع برنامه نویسی هم وارد هستند می خواهم که اطلاعاتشون را برای دیگران بنویسند.
خودم هم اطلاعاتم کم هست ولی سعی می کنم هرچی یاد می گیرم بنویسم.
با تشکر

MiRHaDi
جمعه 13 آبان 1384, 01:57 صبح
سلام
عزیزم شیء گرایی برای یک دلفی کار یک چیز جا افتاده است ، اگر زیاد کسی در بارش صحبت نمیکنه برای اینه که ما زیاد در مورد روش پا کردن کفشمون صحبت نمیکنیم
برای کامپاننت نویسی و ... همش باید از مفاهیم شیء گرایی استفاده بشه و حتی برای استفادش هم .
فکر کنم تو قسمت پاسکال در این مورد صحبت شده ولی خوب استفاده از تجربیات و علم شما هم خالی از لطف برای ما و دوستان نیست
ممنون میشیم حاصل زحماتتون رو در اختیار دوستان بگذارید
یا علی

Naficy
سه شنبه 17 آبان 1384, 14:08 عصر
اصلا موافق این حرف نیستم که شی گرایی برای دلفی کارها یک چیز جا افتاده ست. خود من الآن دلفی نویسهای زیادی رو می شناسم که بلد نیستن کفش پاشون کنن!!! در واقع باید بگم حقیقت شی گرایی چیزی و آنچه در دلفی «نیاز» می شود چیز دیگری است...

Kamyar.Kimiyabeigi
سه شنبه 17 آبان 1384, 14:29 عصر
اصلا موافق این حرف نیستم که شی گرایی برای دلفی کارها یک چیز جا افتاده ست. خود من الآن دلفی نویسهای زیادی رو می شناسم که بلد نیستن کفش پاشون کنن!!!
کاملا موافقم
البته همه بزرگان و اساتید این موضوع رو بهتر از من میدونن ولی خوب برای یادآوری میگم که اصلا دلفی پایش OOP هست یعنی به نظر من اگه کسی OOP ندونه و با دلفی کار کنه مثله اینه که بدون هیچ امکاناتی بخواد با یک قاشق چایی خوری یک تونل مترو حفر کنه :چشمک:

babak869
سه شنبه 17 آبان 1384, 23:07 عصر
کاملا درسته که دانستن شی گرایی یه چیز لازمیه اما برای کار کردن با دلفی دانستنش خیلی واجب نیست.منم خیلی ها رو میشناسم که سالهاست با دلفی کار میکنند اما در زمینه شی گرایی اطلاعاتی ندارند.اما بهتره که یه دلفی کار خودش رو در این زمینه قدرتمند کنه چون واقها قدرت فوق العاده زبانهایی مثل دلفی و جاوا و سی++ در همین شی گرایی اونهاست
موفق باشید

محمد میرمصطفی
چهارشنبه 18 آبان 1384, 23:49 عصر
یه دانستنی آتشین:
هیچ می‏دونین OOP پایش Pascal هست؟
قول می‏دم الان همه می‏گن: نخیر زبان مورد استفاده من بنیانگذار OOP هست.
من ادله مستند دارم که OOP با Pascal معرفی شده. خوب اینو دیگه همه می‏دونن که مادر دلفی پاسکاله.

Naficy
جمعه 20 آبان 1384, 10:09 صبح
البته همه بزرگان و اساتید این موضوع رو بهتر از من میدونن ولی خوب برای یادآوری میگم که اصلا دلفی پایش OOP هست یعنی به نظر من اگه کسی OOP ندونه و با دلفی کار کنه مثله اینه که بدون هیچ امکاناتی بخواد با یک قاشق چایی خوری یک تونل مترو حفر کنه
اگه منظور از بلد بودن OOP، روی فرمها کامپوننت قرار دادن، بلد بودن چگونگی تعریف کردن یک کلاس یا حتی نوشتن چارتا کامپوننت جدید باشه، بله هر دلفی کاری همه اینها (یا حداقل همون اولیه رو) بلده!
اما شی گرایی مفهومی بالاتر از تعریف چارتا کلاس و شئ ه. اونچیزی که اهمیت داره اینه که بلد باشین "تحلیل شی گرا" انجام بدین. بلد باشین چطوری برنامه تون رو "شی گرا" بنویسین. (که البته شی گرایی برنامه هیچ ربطی هم به کارهایی مثل طراحی ظاهر فرم نداره) درک کرده باشین چگونه مساله رو به کلاسها و اشیا مختلف بشکنین و چه قواعدی رو باید در این راه رعایت کنین. داشتن یه همچین دیدی کار ساده ای نیست. و تعداد برنامه نویسهایی (یا به عبارت بهتر تعداد "کسایی که خودشون رو برنامه نویس می دونن") که واقعا این دید رو داشته باشن خیلی کمه. (معمولا هر کدوم از یه طرفی از پشت بوم افتادن!!!)



من ادله مستند دارم که OOP با Pascal معرفی شده. خوب اینو دیگه همه می‏دونن که مادر دلفی پاسکاله.
خییییییلی مشتاقم بشنوم!!

shayan_delphi
شنبه 21 آبان 1384, 06:56 صبح
بنام خدا
سلام به همه دوستان
جناب میرهادی نسبت به موضوع شی گرایی کم لطفی کردند و چیزی که خود من دریافتم خلاف این نظر هست.اطلاعات برنامه نویسها خیلی کم،نامفهوم،دست و پا شکسته و تازه این یه کم اطلاعات در ذهن برنامه نویسهای وارد حبس شده!!و سینه به سینه منتقل میشه اونم با چه سختی؟!! :ناراحت:
به هر حال سعی می کنیم با کمک دوستان (از جمله آقای میر هادی) در زمینه شی گرایی به یه جایی برسیم.
برنامه نویسی شی گرایی سطحی بالاتر از برنامه نویسی ساخت یافته هست،اکثر برنامه نویسان ویژوالی ما بطور ضمنی از شی گرایی استفاده می کنند ولی از اصول آن بی اطلاعند. (به قول دوستان همین گذاشتن کامپوننت روی فرم یا اصلا همین فرمی که می بینیم شی گرایی است )
خود من هم اطلاعات کلی و گنگی درباره بعضی اصطلاحات داشتم و الان مدتی این موضوع را دنبال میکنم و اطلاعات خیلی خوبی بدست آوردم و حتی (به تنهایی) در حال انجام یه پروژه کاملا بر مبنای شی گرایی هستم.خیلی مواقع با مشکلاتی مواجه می شوم ولی یافته ها در این زمینه واقعا فوق العاده هستند و بدون اغراق عرض کنم این نوع برنامه نویسی فوق العاده جالب می باشد.
(حتی توابع و پروسیجرهای شخصی بانک SQL را هم بصورت کامپوننت(شی) استفاده می کنم آنقدر لذت بخش که دهان همه آب می افتد!)
اطلاعات من از وب،eBook ها، کتابها ،برنامه نویسهای دیگه و یافته های عملی خودم هست ، پس اگر دوستان اشکالی هم دیدند برای اصلاح آن حتما اقدام کنند.

shayan_delphi
شنبه 21 آبان 1384, 07:01 صبح
دوستان یافته های خودتون رو به دیگران منتقل کنید و جا برای اطلاعات و دانش تازه در ذهن خود باز کنید.

Kamyar.Kimiyabeigi
شنبه 21 آبان 1384, 09:22 صبح
دوستان یافته های خودتون رو به دیگران منتقل کنید و جا برای اطلاعات و دانش تازه در ذهن خود باز کنید.
منم کاملا موافقم .... جای بحث راجع به OOP بیایید اطلاعاتمونو به دیگران منتقل کنیم

MNosouhi
شنبه 21 آبان 1384, 10:14 صبح
عزیزم شیء گرایی برای یک دلفی کار یک چیز جا افتاده است ، اگر زیاد کسی در بارش صحبت نمیکنه برای اینه که ما زیاد در مورد روش پا کردن کفشمون صحبت نمیکنیم
من هم با صحبت های آقای میرهادی موافقم ، با این توضیح که منظور آقای میرهادی برنامه نویسان واقعی هستش ، وگرنه عمه من هم می تونه یه دیتابیس بسازه و با دلفی بهش کانکت کنه و بگه من هم ذلفی بلدم.
به هر حال از مباحثی که باعث پیشرفت علم دوستان بشه استقبال می کنم.

shayan_delphi
جمعه 27 آبان 1384, 07:13 صبح
سلام
دلفی بر خلاف زبانهای شی گرای خالص مانند SMALLTALK ( که در آن به هر چیز در برنامه به دید یک شی نگاه می شود و شی گرایی اجباری و لازمه برنامه است) یک زبان شی گرای دورگه است که از زبان موجود پاسکال شی گرا بوجود آمده و در آن برنامه نویس به دلخواه از شی گرایی استفاده می کند.
سیستم کدنویسی ساده --- > برنامه نویسی ساخت یافته(کلاس،توابع،پروسیجر و...)
--- >شی گرایی--- >.NET
نکته مهم در برنامه نویسی شی گرایی اینه که لازم نیست همه چیز را در ابتدای انجام پروژه بدانید،
با پیشرفت در پروژه مفاهیم و پاسخها را (که در ابتدا ترسناک بودند) راحت پیدا می کنید.
برخی موضوعاتی که در شی گرایی زیاد به گوشتان می خورد و امیدوارم دوستانی که آشنایی بیشتری دارند از آموزش آنها دریغ نفرمایند:
پایه گذاری شی گرایی بر سه اصل اساسی و مهم :
1- نهان سازی یا کپسوله سازی(Encapsulation) با مکانیزمهای دستیابی Public,Protect,Private,Published و متدهای Constructor و Destructor و ..
2- وراثت (Inheritance)
3- پلی مورفیزم،چند ریختی یا مقید سازی دیر هنگام(Polymorphism or Late Binding).

کلاسها و اشیا و کلمات کلیدی Overlode,Override,Abstract,Virtual در تعریف کلاسها
و ....
شاید از بعضی این موارد استفاده کرده باشید ولی اصل استفاده آنها در شی گرایی است با توجه به اینکه شما بطور ضمنی از شی گرایی استفاده کرده اید.

Naficy
شنبه 28 آبان 1384, 21:33 عصر
راه خوبیه شروع کردین.

یک نکته اینه که نمی شه Published رو جزء نهان سازی (و همینطور جزء مطالب آموزش شی گرایی) حساب کرد. Published فقط برای عملیات ویژوال در دلفی در نظر گرفته شده و ربطی به اصول شی گرایی نداره.

MiRHaDi
دوشنبه 30 آبان 1384, 01:12 صبح
سلام
من همینجا از همه معذرت خواهی میکنم
درست میگید. من فکر کردم کامپاننت رو رو فورم بذارم یعنی شیءگرایی شرمنده
از شما ممنونم که مرا متوجه نمودید :)
فکر کنم یک ایبوک فارسی در این مورد دیدم ! یه سرچی تو بکنیم خوبه
بای

shayan_delphi
جمعه 04 آذر 1384, 08:55 صبح
بنام خدا
یک موضوع مهم در برنامه نویسی استفاده مجدد از کد می باشد.(کاری که در برنامه نویسی ساخت یافته مانند پاسکال،C،VB و غیره با استفاده از رویه ها، توابع و کلاسها انجام می شود نوشتن یکبار--- > فراخوانی چندین بار ) خوبه ولی در اون روش انعطاف پذیری در استفاده و توزیع خیلی کم هست.
حالا در شی گرایی استفاده مجدد از کد یعنی استفاده مجدد از نوع،ایجاد آبجکت و کنترل و توزیع به هر صورت دلخواه.
اگر آبجکت کار شما را راه می اندازه که چه بهتر وگرنه بدون دست زدن به دستورات پایه، موارد مورد نیاز را کم و زیاد می کنیم.این کار همونطور که قبلا اشاره کردم با استفاده یکی از جذابترین مفاهیم شی گرایی یعنی وراثت انجام می شود.این قسمت خیلی جالبه چون خیلی از نیازهای برنامه نویس با همین مورد به سادگی برطرف می شه و در قدرت برنامه،مدیریت برنامه و صرفه جویی در زمان خیلی موثره.(دوستانی که نوشتن برنامه هایی با چندین فرم را تجربه کردند بهتر به اهمیت اون پی می برند)
به عنوان نمونه عرض کنم شما پروژه ای با انواع فرم دارید ،فرمهایی برای دریافت اطلاعات کاربر،
نمایش اطلاعات،گزارشات،تایید کاربر،حتی پیغامهای خطا و.... به علاوه از اشیایی استفاده می کنید که مشخصات خاصی دارند مثلا Edit Box برای تاریخ،برای اعداد اعشاری گرد شده،DBGrid های رنگی،و اشیای سفارشی چندکاره و .....
در حالت عادی برای انجام پروژه چه کار می کنید؟کارهای تکراری،مقدار دهی تک تک و همه جا به صورت تکراری
برای اعمال تغییرات یا اعمال یک عملیات کلی بر روی همه فرمها چه کار می کنید؟چند باره کاری؟
با خطاهای فراوان،مدیریت دشوار،سردر گمی و خیلی مشکلات دیگر(اینم داشته باشید: پشتیبانی وحشتناک)
برای این که موضوع را بهتر درک کنید بهتره یه مثال عملی را با هم انجام بدیم.چطوره؟

saeednayari
جمعه 13 آبان 1390, 11:57 صبح
لطفا این ebookها یا کتابها یا سایتها را معرفی کنید.من که تا الان هر چی کتاب خوندم به جایی نرسیدم
(یا من نمیکشم یا اونا بد توضیح میدن)

Sadbar7
جمعه 13 آبان 1390, 21:00 عصر
یه توصیه میکنم به شما دوست عزیز
کلا به سمت کتابها و ebook های فارسی نرو و برو به سمت خارجی ها ! واقعا خوب و جامع توضیح دادن

armita_171
یک شنبه 25 دی 1390, 01:13 صبح
سلام دوستان
من میخواستم بپرسم در C++‎ برای ایجاد کلاس دانشجو در قسمت private برای بیان خصوصیات (شماره-نام-فامیل-سن-معدل و...) باید struct تعریف کرد؟
خودم که فکر میکنم کلاس خودش یه نوع struct . ولی میخوام مطمئن شم . چون سوال امتحانمون بوده و استاد گفته باید struct تعریف میکردیم.
لطفا تا نمره ها نیومده راهنماایم کنین
با تشکر.

Simorgh_94
پنج شنبه 17 بهمن 1392, 21:06 عصر
سلام دوستان
من میخواستم بپرسم در C++‎‎ برای ایجاد کلاس دانشجو در قسمت private برای بیان خصوصیات (شماره-نام-فامیل-سن-معدل و...) باید struct تعریف کرد؟
خودم که فکر میکنم کلاس خودش یه نوع struct . ولی میخوام مطمئن شم . چون سوال امتحانمون بوده و استاد گفته باید struct تعریف میکردیم.
لطفا تا نمره ها نیومده راهنماایم کنین
با تشکر.
به طور کلی استراکت و کلاس مشابه هم هستند !!!!!!!
با این تفاوت که قدرت کلاس خیلی بشتر از استراکت هستش و برای کارای معمولی مانند نگهداری خصوصیات دانشجو بهتره از استراکت استفاده کرد
ولی اگه علاوه بر نگه داری مشخصات دانشجو می خواهید توابعی مربوط به دانشجو را ایجاد کنید مانند بدست اوردن معدل کل دروس و... بهتره از کلاس استفاده کنید زیرا قدرت بیشتری دارد.(البته از نظر من)