آموزش جاوا - قسمت یازدهم

1396/3/26 محمد چنگانی 4024

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

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

پروژه اول هدف طراحی یه سیستم ATM هست، که چندین کاربر در آن وجود دارند که هر کاربر فقط یک حساب مشخص دارد و قابلیت‌های برداشت وجه،‌واریز وجه، انتقال وجه، اعلام موجودی و ۵ عملیات آخر پیاده سازی می‌شود.

در مرحله بعد یاد میگیریم چطور این اصلاعات رو در فایل ذخیره سازی کنیم و چطور بازیابی کنیم.

خوب بریم سراغ پیاده سازی این پروژه کوچک:

دقت کنید برای طراحی یه پروژه لازم نیست از همان اول کدنویسی رو شروع کنیم. ابتدا باید کارهای اولیه یه پروژه را روی کاغذ بنویسیم. و بعد از مشخص شدن چهارچوب اصلی سیستم، شروع پیاده سازی کنیم.

اولین قدم در طراحی یه سیستم در واقع شناسایی موجودیت‌های سیستم هست. در صورتی که خوب موجودیت هایی یک سیستم را تشخیص ندهیم تا انتهای پروژه مشکل خواهیم داشت و یا به بن‌بست برمی‌خوریم و نیاز به تغییرات کلی در ساختار پروژه هست.

در واقع به هرچیزی از پروژه که بتونیم یک یا چندین نمونه از اون رو داخل سیستم داشته باشیم و یکسری ویژگی و یا توانایی برای اون بتونیم تعریف کنیم را به عنوان موجودیت میشناسیم

نکته بعدی اینکه موجودیت‌های یک سیستم با توجه به تعریف مسئله و یا نیازها میتونند تغییر کنند. یعنی به خودی خود یه موجودیت باشند ولی با فرضیات و نیازهای مسئله موجودیت نباشند

خوب ببینیم چه موجودیت‌هایی میتونیم در ابتدا فرض کنیم:

۱- کاربر

۲- حساب

۳- شماره حساب

۴- بانک

۵- موجودی

۶-مدیر

خوب مشخصا کاربر اولین موجودیت سیستم ما هست که قرار اطلاعات کاربران سیستم ما رو نگه داره و عملیات رو انجام بده پس به درستی انتخاب شده است.

حساب:

خوب با توجه به اینکه هر کاربر یک حساب دارد و اینکه حساب خودش دارای موجودی و تاریخ ثبت و همچنین شماره حساب هست پس منطقی میاد که به صورت یه موجودی باشد.

دقت کنید چون مسئله گفته هر کاربر یک حساب دارد پس میتونیم ویژگی‌های حساب رو به کاربر منتقل کنیم و موجودی جدیدی ایجاد نکنیم چون به ازای هر کاربر دقیقا یک حساب وجود دارد پس نیاز به تعریف جدیدی از حسابب نیست.

شماره حساب:

واقعا شماره حساب میتونه یه موجودیت باشد؟ آیا خود شماره حساب دارای ویژگی یا توانایی هست که اون رو به عنوان یه موجودیت مستقل در نظر گرفت؟ جواب این سوال خیر هست پس نباید به عنوان موجودیت در نظر گرفت.

بانک:

در کل سیستم ما فقط یک بانک وجود دارد. آیا نیاز هست باید رو به عنوان یه موجودیت در نظر گرفت؟

جواب این سوال این هست که موجودیت به تعداد نمونه ها نیست، باید ببنیم آیا میتوان برای آن ویژگی یا توانایی تعریف کنیم یا نه.

پس بانک هم یک موجودیت مستقل به حساب میاد که مثلا مجموعه‌ای از کاربران در آن وجود دارند…

موجودی:

آیا خود موجودی داریا ویژگی یا توانایی هست؟ خیر

موجودی خودش یک ویژگی برای حساب یا کاربر هست پس نمیتونه خودش موجودیت مستقل باشه.

مدیر:

مدیر خودش یک نوع کاربر هست، با این تفاوت که فقط سطح دسترسی متفاوتی داره بنابراین نیاز نیست با کاربر متمایزش کرد و فقط تمایزی که داره میتونه یک ویژگی به نام سطح کاربری باشه که یک مشتری را از یک مدیر مجزا میکنه.

بیشتر فک کنید شاید موجودیت‌های دیگه سیستم داشته باشه که لازم هست اضافه شوند…

تا اینجا پس ما موجودیت‌های زیر رو داریم:

۱- بانک

۲-کاربر

۳- حساب

هنوز زمان کدنویسی نشده!!! الان باید برای هرکدوم از این موجودیت‌ها، ویژگی‌ها و توانای‌هاشون رو مشخص کنیم. یادآوری میکنم ویژگی‌ها همون fieldها هستن و توانایی همان method های یک کلاس هست.

تشخیص اینکه چه ویژگی یا توانایی مربوط به کدام موجودیت هست بسیار مهم هست و باعث کاهش پیچیدگی سیستم می‌شود(به شدت)!

خوب برای راحتی کار مهندس‌نرم افزار ابزاری به نام UML معرفی کرده که در واقع ابزاری برای مدل کردن هست. ما هم برای نمایش موجودیت ها از این ابزار استفاده می‌کنیم.

یک مثال خیلی ساده برای UML به این صورت هست که نمایش خیلی خیلی ساده از یه سیستم دانشگاه هست. (دقت شود انواع مدل UML با طراحی ونمایش های مختلف وجود دارد...)

کد جاوا

هر بخشی از یک موجودیت در داخل UML از سه قسمت زیر تشکیلی شده است

۱- نام موجودیت که اگر دقت شود با حرف C نمایش داده میشود که بیانگر class هست

۲- ویژگی‌ها که با حرف f یا همان field نمایش داده می‌شود. دقت کنید نام ویژگی در سمت چپ و نوع و type ان در سمت راست آن قرار می‌گیرد.

۳- توانایی ها یا متدها که با حرف m نمایش داده می‌شوندو در سمت چپ نام متد همراه با نوع ورودی ها نوشته می‌شود و در سمت راست خروجی متد.

دقت شود این سه بخش با یک خط از هم جدا می‌شوند.

خوب برای جلسه بعدی در مورد UML سیستم ATM که قرار پیاده سازی کنیم فک کنید و اون رو روی کاغذ بنویسید. در آینده ابزار این کار که با کامپویتر کشیده بشه و مستند شود هم گفته می‌شود.

آیکن دانلود دانلود PDF آموزش قسمت دهم جاوا

کلمات کلیدی