استفاده از Constructor زبان برنامه‌نویسی جاوا در قالب پروژه‌ای عملی


در این آموزش قصد داریم تا به منظور درک عملی کاربرد کانستراکتور، سناریویی تعریف کرده و آن را پیاده‌سازی نماییم. فرض می‌کنیم که می‌خواهیم برنامه‌ای طراحی کنیم که در ابتدا نام کاربر سپس نام خودروی وی را می‌گیرد و در نهایت میزان سوخت مصرفیِ خودروی کاربر به ازای هر 100 کیلومتر را در خروجی نمایش دهیم. بنابراین در ابتدا یک پروژۀ جدید تحت عنوان MyCarAndI ایجاد می‌کنیم و کلاسی به نام FuelConsumption در آن می‌سازیم. در ادامه، به منظور نگهداری نام کاربر و همچنین نام خودروی وی، دو متغیر فیلد به صورت زیر تعریف می‌کنیم:

public class FuelConsumption {
    String name;
    String carName;
}

در کد فوق، دو آبجکت از نوع فیلد تحت عناوین name و carName از روی کلاس String ساخته‌ایم که قرار است تا به ترتیب نام کاربر و نام خودروی وی را نگهداری کنند. 

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.

به طور کلی، در این آموزش کانستراکتوری برای کلاس FuelConsumption پیاده‌سازی کردیم و دیدیم که چگونه می‌توان مقادیر مورد نظر خود را به آبجکت جدید ساخته‌شده از روی کلاس داد تا کانستراکتور در حین فراخوانی آن‌ها را متغیرهای فیلد تعریف‌شده اختصاص دهد. به علاوه، به منظور دریافت دیتای ورودی به صورت دینامیک، از کلاس Scanner استفاده کرده و متدهای تعبیه‌شده در آن از جمله ()next و ()nextDouble را به منظور خواندن دیتای ورودیِ کاربر فراخوانی نمودیم.

دانلود فایل‌های تمرین


بهزاد مرادی

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
amilad
amilad
۱۳۹۷/۱۰/۱۸
من متوجه عملکرد کانستراکتور نشدم
حتی وقتی پاکس هم می کنیم کد به درستی اجرا میشه ک
کاربر میهمان
KinGمن یک کاربر مهمان هستم
۱۳۹۶/۰۲/۰۲
ممنون از آموزش فوق العاده خوب شما
Saeed_m.sh
Saeed_m.sh
۱۳۹۵/۰۷/۱۱
سلام خسته نباشید.متد های returnName و returnCarName متد های getter هستن؟؟؟ اگه میشه درمورد متد های getter و setter و کاربردشون تو برنامه توضیح بدید.خیلی ممنون.
m.ali
m.ali
۱۳۹۵/۰۱/۱۶
با سلام و تشکر از آموزش روان و کاربردی شما. چند نکته کوچک بنظرم رسید که در میون میذارم:
1. فکر می کنم در قسمت های آخر کد کلاس ActionClass، به اشتباه دستور تغییر خط در عبارت " car nconsumes "، بدون بک-اسلش قبل از "n" نوشته شده است.
2. بهتر نبود که در بخش مربوط به اسکنر، در قسمت اول که نام خود کاربر درخواست می شود، از دستور String userName = keyboardInput.nextLine(); استفاده شود؟ تا در صورت وارد شدن space، ورودی بعدی که مربوط به نام ماشن است نیز، حتی قبل از پرسیده شدن سوال مربوطه، پر نشود! (مثلا در حالت فعلی اگر کاربر در قسمت نام، اسم و فامیل خود را نوشت ali amiri، ناخواسته "amiri" به نام ماشین او اختصاص خواهد یافت). (ضمنا نمایش سوال و جواب هم در کامپایلر در این حالت بهم خواهد ریخت!)
کاربر میهمان
دانشجومن یک کاربر مهمان هستم
۱۳۹۵/۰۱/۱۲
ممنون از آموزشها ولی اینجا اصلا چه نیازی به کانستراکتور هست بدون اون هم این برنامه میشه کار کنه هر چند جنبه آموزشی داره ولی بهتر بود مثال کاربردی تری باشه چون اینجا کانستراکتور یه چیز اضافیه در حقیقت مثال کمی بی ارتباط با کانستراکتوره در هر حال ممنون
کاربر میهمان
حسینمن یک کاربر مهمان هستم
۱۳۹۴/۱۲/۰۷
واقعا عالی بود لذت بردم بهزاد جان کارت عالیه فوقالعاده بود
هاشم همراز
هاشم همراز
۱۳۹۴/۱۰/۰۶
با سلام و تشکر از آموزشهای خوبتون
در پاراگراف دوم سطر دوم عبارت نام کلا FuelConsomption تایپ شده است که از لحاظ معنای لغوی باید FuelConsumption میشد
آموزشتون بی نظیره
تشکر فراوان از استاد مرادی
کاربر میهمان
Maryamمن یک کاربر مهمان هستم
۱۳۹۴/۰۹/۲۳
سلام
از آموزش خوبتون ممنونم و براتون آرزوی سلامتی وپیروزی میکنم.
من تو دستور آخر مربوط به نمایش Dear ...دچار مشکل شدم .نمیدونم چرا به جای اسم کاربر و نام خودرو کاربر که از طریق کیبورد وارد برنامه میشه عبارت های userName و userCarNameرو نشون میده! کد که نوشتم کاملا شبیه کد گفته شده در آموزش هست.
ccc ccc
ccc ccc
۱۳۹۴/۰۸/۲۲
سلام
هر کلاس به صورت پیش فرض سازنده داره. سوالی هم که پرسیدین خیلی درست نیست. کانستراکتور برای این هست که شما وقتی از یک کلاس آبجکت ایجاد می کنید، در همون لحظه با استفاده از پارامترهای کانستراکتور، فیلد های اون کلاس و مقدار دهی کنید.
کاربر میهمان
sogandمن یک کاربر مهمان هستم
۱۳۹۴/۰۸/۲۲
با عرض سلام و ممنون از آموزش خوبتون، میخواستم بپرسم وقتی یک کلاس از کلاسی دیگر به ارث میبرد آیا میتوان برای هر دو کلاس constructor نوشت؟ و اینکه آیا subclass تابع constructor کلاس اصلی را به ارث میبرد یا خیر؟
ممنون