هدف از طراحی چیست؟ ما طراحی میکنیم تا علاوه بر نیازهای عملیاتی، به نیازهای غیر عملیاتی ( Non Functional Requirements ) نیز فکر کنیم؛ در حالیکه در زمان برنامه نویسی صرفا به Functionality فکر میکنیم. کتاب Object Oriented Design Heuristics اولین کتاب در زمینه طراحی و توسعه شیء گرا میباشد. خواندن آن برای برنامه نویسان در هر رده ای که هستند، مفید خواهد بود و میتوانند از این Heuristicها (قواعد شهودی) به عنوان ابزاری برای تبدیل شد ...
Options یا Maybe در یک زبان تابعی مثل #F، نشان دهندهی این است که شیء (Object) ممکن است وجود نداشته باشد(Null Reference) که یکی از مهمترین ویژگیهای یک زبان شیءگرا مثل #C و یا Java محسوب میشود . ما برنامه نویسها (اغلب) از هرچیزی که باعث کرش برنامه میشود، بیزاریم و برای اینکه برنامه کرش نکند، مجبور میشویم تمام کدهای خود را از Null Reference محافظت کنیم. تمام این مشکلات توسط Tony Hoare مخترع ALOGL است
که تنها دل ...
مقدمه
وراثت، بین کلاسهای والد (Parent) و فرزند (Child) ارتباط ایجاد میکند. در این مطلب، با یک مثال ساده، نکات مختلفی را بررسی خواهیم کرد.
در ابتدا کلاسهایی را با نام parent و child، به شکل زیر ایجاد میکنیم: public class Parent
{
public Parent()
{
Console.WriteLine("Parent Constructor");
}
public void Print()
{
Console.WriteLine("Parent Print");
}
}
...
در ادامه مطلب قبلی ، یکی از مشکلاتی که طراحی Builder از آن رنج میبرد، نقض کردن قانون command query separation است که در ادامه دربارهی این اصل بیشتر بحث خواهیم کرد. اصل Command query separation یا به اختصار CQS، در کتاب Object-Oriented Software Construction توسط Bertrand Meyer معرفی شدهاست. بر اساس آن، عملیاتهای سیستم باید یا Command باشند و یا Query و نه هر دوی آنها. وقتی یک کلاینت به امضای یک متد توجه میکند، اینکه این متد چه ...
الگوی طراحی builder ، برای ساختن اشیاء بسیار مفید است؛ اما پروسه ساختن اشیاء آن بسیار پیچده هست و به صورت معمول، این پروسه شامل چندین قسمت میشود. در این مثال ما مشکلات ساختن شیء Person را مورد بررسی قرار میدهیم و این شیء از اشیایی کوچکتر مانند Name ، Surname و یا Primary Contact و غیره نیز تشکیل شده است. class Person : IPerson
{
private string Name { get; }
private string Surname { get; }
private IContact ...
دانای اطلاعات ( Information Expert ) بر طبق این اصل میتوان برای واگذاری
هر مسئولیت، کلاسی را انتخاب کرد که بیشترین اطلاعات را در مورد انجام آن در اختیار
دارد و لذا نیاز کمتری به ایجاد ارتباط با دیگر مولفهها خواهد داشت. در مثال زیر مشاهده میکنید که کلاس User، اطلاعات کاملی را از عملیات اضافه کردن آیتمی را به لیست خرید و تسویه حساب، ندارد و پیاده سازی این عملیات در این کلاس، نیاز به ایجاد وابستگیه ...
برنامه نویسی شیء گرا در این بخش میخواهیم به بررسی یکسری از ویژگیها و نکات ریز برنامه نویسی شیء گرا در جاوا اسکریپت بپردازیم که یک برنامه نویس حرفهای جاوا اسکریپت حتما باید بر آنها واقف باشد تا بتواند کتابخانهها و Framework های موثرتر و بهینهتری را ایجاد کند. لازم به ذکر است که در این مجموعه مقالات، پیادهسازی اشیاء و شیوهی کد نویسی، بر اساس استاندارد ECMAScript 5 یا ES5 ...
معرفی برخی عملگرها در مقالات قبلی مقدماتی را جهت ورود به برنامه
نویسی شیء گرا در جاوا اسکریپت مطرح کردیم و در اینجا نیز به معرفی برخی عملگرها میپردازیم که در برنامه نویسی شیء گرا نقشی اساسی را ایفا میکنند. عملگر typeof از آنجائیکه جاوا اسکریپت دارای نوع دادهای
ضعیف یا Loosely Typed میباشد، باید در بکارگیری متغیرها و یا آرگومانهای ورودی توابع، دقت لازم را
...
عناصر داخلی تابع در داخل هر تابع دو شیء خاص به نامهای arguments و this
وجود دارند. شیء arguments ، که
قبلا در مورد آن صحبت کردیم، دارای یک ویژگی به نام callee میباشد که به
تابعی اشاره میکند که arguments
متعلق به آن است. به مثال زیر توجه کنید که تابع فاکتوریل را به صورت بازگشتی
پیاده سازی نموده است: fun ...
انواع ارجاعی قبلا در مورد مقادیر ارجاعی صحبت کردیم. در
اینجا نیز به این موضوع اشاره میکنیم که هر مقدار ارجاعی، نمونهای ایجاد
شده از یک نوع ارجاعی میباشد. انواع ارجاعی در واقع ساختارهایی هستند که
جهت گروه بندی دادهها و عملکرد بین آنها استفاده میشوند. در سایر زبانهای برنامه نویسی شیء گرا، به انواع ارجاعی، کلاس و به مقادیر ارجاعی، شیء میگویند. در
جاوا اسکریپت نیز، به مقادیر ارجاعی و یا نمونههای ایجاد شده از ...