سلام به همه
توضیحات ضروری: برای کسانی که سطح دسترسی را کاملا آگاهی ندارند: باید فیلدها private باشند.
قبل از شروع برای اگر هنوز قوانین ارسال تکالیف را نمی دانید بهتر است را مطالعه کنید!
سوالات شما از این تمرین به بعد تا سه شنبه شب پاسخ داده می شود! پس بهتر است انجام این تمرین را به روز آخر موکول نکنید.
این هفته قراره یک سامانه شبکه اجتماعی بر اساس گردشگری پیاده سازی کنید:
این سامانه از کلاس های زیر تشکیل شده است که به ترتیب به شرح زیر می باشند:
class Person{ Person(String userName, String password){...} void setPassword(String s){...} String getUserName(){...} void addFriend(Person p){...} Person[] getFriends(){...} void addPlaceToWishList(Place p){...} Place[] getWishList(){...} }
این کلاس با گرفتن دو String ساخته می شود.
متد setPassword گذرواژه را تغییر می دهد.
متد getUserName نام کاربری را برمیگرداند.
متد addFriend یک Person به لیست دوست های آن فرد اضافه می کند.
متد getFriends لیست دوست های یک نفر را بر می گرداند. آرایه ای از Person
متد addPlaceToWishList یک مکان گردشگری(Place) را به لیست علاقه مندی اضافه می کند.
متد getWishList یک آرایه از مکان های گردشگری بر می گرداند.
class Review{ Review(Person p, String text){...} String getReview(){...} void like(){...} int getLikes(){...} void disLike(){...} }
این کلاس با گرفتی متن نقد و یک object از Person که نویسنده متن است ساخته می شود.
getReview متن نقد را برمی گرداند.
متد Like یک لایک (پسند) اضافه می کند.
getLikes تعداد لایک ها را بر می گرداند.
disLike یک لایک(پسند) از این نقد کم می کند.
class Place{ Place(String name, String city, int x, int y){...} void setName(String name){...} int[] getLocation(){...} void like(){...} void disLike(){...} int getLikes(){...} String getCity(){...} int distanceTo(Place p) }
این کلاس با گرفتن نام و شهر و عرض و طول جغرافیایی(xوy ) ساخته میشود.
setName نام مکان را تغییر می دهد.
getLocation آرایه طول و عرض جغرافیایی را برمیگرداند.
like و disLike و getLikes مانند متد کلاس قبلی است.
getCity نام شهر را برمیگرداند.
distanceTo فاصله اقلیدسی تا مکان داده شده بر میگرداند.
class Business{ Business(String name, int x, int y){...} String getName(){...} int[] getLocation(){...} void setLocation(int x, int y){...} void addReview(Review r){...} void like(){...} void disLike(){...} int getLikes(){...} }
این کلاس با گرفتن اسم کسب و کار و مکان جغرافیایی ساخته می شود.
getName و like و disLike و getLocation و getLikes همانند قبل پیاده سازی شود.
addReview یک نقد به نقدهای مرتبط با این کسب و کار بر می گرداند.
setLocation مکان جغرافیایی را به مکان جدید تغییر می دهد!
ملاحظات ضروری:
۱) دقت کنید امنیت داده خیلی در سایت ها و زیرساخت های اجتماعی و اقتصادی اهمیت دارند. مثلا ما متد like و dislike تعریف کردیم و قرار نیست از بیرون object یک دفعه این مقدار را دستی تغییر بدیم! برای فیلد سطح دسترسی منطقی انتخاب کنید! در نمره ی این تمرین سطوح دسترسی بسیار اهمیت دارند!!!
۲) برای بار آخر نام گذاری را کاملا درست مطابق آنچه گفته شده انجام بدید! باز هم افرادی اسم کلاس را اشتباه در نام فایل وارد می کنند!!! این بار در صورت مشاهده قطعا صفر داده خواهد شد!
۳) این مثال ساده بسیار زیبا در حال توصیف ساختار یک زیرساخت اجتماعی اقتصادیست و با ترکیب اطلاعات جغرافیایی و اقتصادی و اجتماعی یک ارزش دوچندان پیدا می کند.
سایت های مشابهی مانند tripadvisor و yelp هستند که در خارج بسیار موفق هستند. مثلا بر اساس موقیت شما و علاقه های شما به شما مکان های گردشگری پیشنهاد می کنند و رستوران ها و هتل های نزدیک را به شما نشان می دهند. رستوران ها و هتل ها می توانند قیمت و منو ها خود را به اشتراک بگذارند و سامانه رزرو آنلایل راه اندازی کنند! نبود همچین سامانه ای در کشور ما با امکانات عظیم گردشگری باعث تاسف است. در کشورهای پیشرفته گردشگری به عنوان و صنعت و علم جا افتاده است!
در نهایت: می خواستیم به شما نشان بدیم که FaceBook و twitter و حتی cloob و جملک روز اول که راه افتاد در حد یک کار بسیار ساده بوده است. و شما با انجام این تمرین عملا یک بار faceBook نوشتید که به اضافه کردن رابط کاربری(UI) و دیتابیس کار تمام است!!!
در تمرین های دیگر از کاربرد programming در زمینه های اقتصادی , شیمی و ریاضی و فیزیک آگاه میشوید!
با احترام.