روی خط زندگی

گشت و گذار من در هنر نرم افزار

روی خط زندگی

گشت و گذار من در هنر نرم افزار

۲ مطلب در فروردين ۱۳۹۴ ثبت شده است

وقتی می گوییم Object Oriented Analysis and Design منظور چیست و چه تفاوتی با Object Oriented Programming یا همان OOP دارد؟


در واقع برای پیاده سازی یک سیستم، ابتدا باید آن را بشناسیم. این فرآیند شناخت هم می تواند از اصول و قواعد شی گرایی تبعیت کند. بیایم به مفاهیم این کلمات نگاهی بیاندازیم:

Analysis (تحلیل): فهمیدن آن که مشکل چیست و چه راه حلی برای حل آن وجود دارد.

Design (طراحی): طراحی کردن مساله و برنامه ریزی برای حل آن.

Programming (برنامه نویسی): ساخت و پیاده سازی راه حل.

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


برای پیاده سازی یک پروژه، ابتدا باید بدانیم که کلاس های اصلی ما که همان دامین مساله را تشکیل می دهند، کدامند؟ برای پاسخ به این سوال از فرآیند تحلیل و طراحی شی گرا استفاده می کنیم. نتیجه نهایی این فرآیند آن است که کلاس های اصلی ما کدامند و چه کاری انجام می دهند. برای نایل شدن به این هدف باید پنج گام را طی نماییم:

گام اول) شناسایی و جمع آوری نیازمندی ها

طبیعتا برای طراحی و پیاده سازی سیستم ابتدا باید بدانیم مشتری یا همان کارفرما چه می خواهد و چه انتظاراتی از سیستم دارد.


گام دوم) شرح و بسط مساله

یعنی سیستمی که می خواهیم بنویسیم چه کاری را می خواهد انجام دهد و چه امکاناتی دارد. برای انجام این مهم تکنیک ها و مستندات مختلفی وجود دارد. از قبیل Use Case و User Story


گام سوم) مشخص کردن اشیا وEntity  های اصلی 

این ها همان بازیگران اصلی سیستم هستند که با مشخص شدن آنها، گام اول برای طراحی کلاس ها را برداشته ایم. برای طی این مرحله از همان مستنداتی که در گام دوم ایجاد شده اند استفاده می کنیم (مانند Use Case و User Story) تا مفاهیم و اجزای اصلی سیستم که دامین پروژه را تشکیل می دهند، را بیابیم.


گام چهارم) طراحی ارتباطات و تعاملات این اجزا با یکدیگر

حال که در گام سوم اجزا را شناختیم، باید ارتباطات و تعاملات این اجزا را با هم و با جهان بیرون از سیستم، بیابیم. برای این کار می توانیم از نمودار های تعاملی UML مانند Swim lane و Sequence Diagram استفاده کنیم. این نمودار ها به ما کمک می کنند که وظایف و مسئولیت های اجزا و Object های مختلف سیستم را بهتر بشناسیم.


گام پنجم) طراحی کلاس دیاگرام (Class Diagram)

در این گام به نتیجه دلخواه که همانا طراحی نمودار کلاس ها می باشد رسیده ایم. این طراحی هم شامل کلاس ها و رفتار هایشان است و هم شامل اصول و قواعد طراحی شی گرا مانند Inheritance، Abstraction .


توجه داشته باشید که این پنج گام را تنها یکبار طی نخواهیم کرد و در هر گذار (Iteration یا Sprint) از عمر یک پروژه ممکن است دوباره این گام ها یا چند عدد از آنها را مجددا طی کنیم تا شناخت بهتری نسبت به سیستم بدست آوریم.


۰ نظر موافقین ۰ مخالفین ۰ ۲۷ فروردين ۹۴ ، ۲۲:۰۷
حسین گویا

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

  1. 2+3
  2. ‘a’+’b’
  3. “Hello” + “world”

در مثال اول عملگر جمع در حال جمع دو عدد است، در مثال دوم همین عملگر در حال جمع دو کاراکتر و در مثال سوم در حال جمع دو رشته است. این معنای همان رفتار مناسب در زمان استفاده است. ما در زمان استفاده تغییری در عملگر ایجاد نمی کنیم ولی عملگر جمع رفتار مناسب را از خودش نمایش می دهد.

دو شکل از چند ریختی یا همان Polymorphism وجود دارد:

شکل اول) Static Polymorphism

چند ریختی ثابت، در سطح توابع وجود دارد و همان overloading است. بدان معنا که یک تابع با چند مدل از ورودی ها پیاده سازی می شود و در زمان فراخوانی بنا به پارامتر ارسالی تابع مناسب اجرا می شود. مانند:

Add (int a, int b)

Add  (string a, string b)


شکل دوم) Dynamic Polymorphism

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


۱ نظر موافقین ۰ مخالفین ۰ ۱۰ فروردين ۹۴ ، ۱۹:۴۵
حسین گویا