# Native Code > برنامه نویسی در Delphi >  OOP کیست؟ چیست؟ کجاست؟

## nasr

ببخشید که من وارد بحث شما شدم   ولی 

لطفا بفرمایید OPP اصلا چیه تا ماهم از این تاپیک یه استفاده ای بکنید

با تشکر

----------


## مهدی کرامتی

برنامه نویسی شیءگرا (Object Oriented Programming).

----------


## مهدی کرامتی

اینجوری نمیشه.

بهتره بحث ایجاد کامپوننت رو با بحث OOP قاطی نکنیم و هر کدوم رو در یک تاپیک جداگانه دنبال کنیم. بهتر نیست؟

برادر سپیدار: لطفا بحث OOP را شروع نمایید.

----------


## Sepidar

با عرض سلام
خدمت حاج مهدی گرانقدر :)  و گرانسنگ :mrgreen: عرض شود که به 2 دلیل بنده دست و دلم سخت به شروع این بحث میره:
1. اساتید معظم زیادی هستند که قطعا خیلی قوی oop کار کرده‌اند و بنده جسارت نمی‌کنم در محضر آنها بی ادبی کنم. مخصوصا حاج کامبیز.
2. این مقاله های چت هم مونده که هنوز تایپشون نکردم. شاعر می‌فرماید: اینی رو که زاییدی بزرگش کن تا بعدی.


اما برای اینکه صحبت شما هم زمین نمونده باشه بحث رو شروع می کنم با این امید که اساتید از کمک فروگذار نفرمایند.

----------


## Sepidar

اما بعد.

بهتره با یه تاریخچه مختصر از سبکهای برنامه نویسی شروع کنیم.

1. برنامه نویسی سنتی:  در برنامه نویسی سنتی (که معمولا در سطح ماشین انجام می‌شد) هر برنامه شامل یک سری دستورات انتساب، پرشهای ساده و یا شرطی میشد. در حقیقت کدهایی هم که هم اکنون می نویسیم در آخر به چنین دستوراتی ترجمه میشوند. 
فرض کنید می خواهید یک برنامه سنتی بنوسید. برای اینکار سعی کنید فقط از کلمات کلیدی زیر استفاده کنید:
program
var
begin,end فقط یکیار در ابتدا و انتهای برنامه.
if
:=
goto
label
در این صورت شما احتمالا یک برنامه سنتی نوشته اید.

2. برنامه نویسی ساخت یافته: در برنامه نویسی ساخت یافته 3 فرایند همزمان اتفاق افتاد. قبل از اینکه به فرایندها بپردازم باید بگویم که پیشرفت این 3 فرایند بسیار تدریجی بود (و نه اینکه امشب یکی بخوابه و از فردا صبحش ساخت یافته برنامه بنویسه).
اما این 3 فرایند:

_الف) ساختیافتگی کد:_ یادمه وقتی اولین بار از basic سراغ پاسکال اومدم،‌استادم بهم گفت اینجا از همه چیز میتونی استفاده کنی به غیر از goto! (الان من 9 ساله از این دستور استفاده نکرده ام!) عیب کار هم خیلی واضح بود: با بزرگ شدن برنامه ها تعداد gotoها هم زیاد میشد، تا جایی که واقعا نمیشد شخص ثالثی برنامه را بخواند و بفهمد. بنابر این این ایده قوت گرفت که به جای استفاده از دستورات goto نامفهوم از دستوراتی مانند while, for که خوانایی بیشتری به برنامه ها می دهند استفاده شود. (به نقل از حاج کامبیز: در کل پیاده سازی جاوا فقط 1 جا از دستور goto استفاده شده: در آن یک مورد استثنائا کد خواناتر می‌شده)

_ب) کپسوله کردن کد:_این قسمت شاید مهمترین ایده برنامه نویسی ساختیافته بوده است. برنامه نویسان همیشه میخواسته اند که اولا در یک برنامه کد تکراری نداشته باشند و در ثانی کدی را که یکبار نوشته‌اند در برنامه های مختلف به کار گیرند: کپسوله کردن کد این امکان را به شما می دهد.
کپسوله کردن کد در واقع همان نوشتن کد مرتبط در یک بخش از برنامه به نام روتین (=فانکشن) و سپس فراخوانی آن می باشد.

_ج) کپسوله کردن داده:_ استفاده از یک مثال شاید گویاترین راه باشه. فرض کنید میخواهید شماره یک دانش‌آموز، قد، وزن و معدل او را در حافظه نگهداری کنید. فکر میکنید استفاده از کدام 2 ساختار زیر راحتتر باشد؟
var
  StdInfo&#58;array&#91;1..4&#93; of real;
یا
type
 TStudInfo=record
  Number&#58;integer;
  Average,Height,Weight&#58;real;
 end;

var
 StudInfo&#58;TStudInfo;

روش اول کلاسیک و روش دوم ساختیافته است.

3. برنامه نویسی شیئ‌گرا: در این سبک برنامه نویسی ایده کلی آنست که کد وداده با معرفی مفهوم شیئ یکجا کپسوله شوند. توضیحات بیشتر در مورد این سبک موضوع مقالات بعدی خواهد بود.

----------

