اما این مراحل عبارتند از:
- تصمیم
- دانایی
- نقشه راه
- عمل
- پشتکار
- پایداری
- احتیاط
شاد باشید.
private final VerticalPanel container;
private final LabeledTextBox usernameTextBox;
private final LabeledTextBox passwordTextBox;
private final Button loginButton;
public LoginPanel() {
container = new VerticalPanel();
initWidget(container);
usernameTextBox = new LabeledTextBox("Username");
container.add(usernameTextBox);
passwordTextBox = new LabeledTextBox("Password", true);
container.add(passwordTextBox);
loginButton = new Button("Login");
container.add(loginButton);
}
@Override
protected void onLoad() {
super.onLoad();
usernameTextBox.setFocus(true);
}
}
public class OverExtendedWidget extends HorizontalPanel {
public OverExtendedWidget() {
//...
}
}
class ConservativeWidget extends Composite {
private final HorizontalPanel panel;
public ConservativeWidget() {
panel = new HorizontalPanel();
initWidget(panel);
// ...
}
}
در توسعه نرم افزار با روش Aspect Oriented مفهومی با نام use case slice وجود دارد که به توسعه دهندگان کمک می کند که پیاده سازی use case ها را از یکدیگر جدا کنند و با این کار use case های درون سیستم با یکدیگر overlap نداشته باشند. بمنظور روشنتر شدن مطلب یک مثال عملی می آوریم:
در روش های (use case driven development) توسعه نرم افزار براساس use case مانند RUP فعالیت های زیر برای رسیدن به یک محصول خوب انجام می شود:
1. پیدا کردن use case ها و مشخص کردن جزئیات هر کدام از آنها.
2. طراحی هر کدام از use case.
3. طراحی و پیاده سازی هر کدام از کلاس ها.
4. آزمایش هر کدام از use case.
در شکل زیر دیاگرام use case سیستم فرضی رزرو هتل را مشاهده می کنید:
نکته: برای مشاهده عکس ها در سایز بزرکتر برروی آنها کلیک کنید.
در شکل بعدی مراحل و چگونگی رسیدن به کلاس های سیستم را با استفاده از روش های (use case driven development) توسعه نرم افزار براساس use case مشاهده می کنید:
نکته: برای مشاهده عکس ها در سایز بزرکتر برروی آنها کلیک کنید.
همانطور که در شکل بالا مشاهده می کنید پس از پایان مرحله سوم و پیاده سازی کلاس های سیستم ، مشاهده می کنیم که کلاس های سیستم overlap زیادی دارند بدین معنی که مثلا پیاده سازی یک use case مانند Reserve Room در چهار کلاس مختلف پخش شده است که این امر Modularity سیستم را پایین می آورد و اصلاح سیستم در آینده را دشوار می سازد.
اما در توسعه نرم افزار با روش Aspect Oriented پس از پیدا کردن use case های سیستم و Realize کردن آنها ، با استفاده از مفهوم use case slice و AOP = Aspect Oriented Programming ، جداسازی use case در زمان پیاده سازی بطور کامل رعایت می شود. برای روشنتر شدن مطلب به شکل زیر توجه کنید:
نکته: برای مشاهده عکس ها در سایز بزرکتر برروی آنها کلیک کنید.
همانطور که در شکل بالا مشاهده می کنید در واقع use case slice ها همان تکه های طراحی یک use case هستند که در کلاس های مختلف پخش شده بودند.
حال با استفاده از مفهوم aspect در AOP = Aspect Oriented Programming (مثال زیر با AspectJ است) که معادل با use case slice است ، هر کدام از use case slice های بدست آمده در مرحله قبل را پیاده سازی می کنیم.