3Бүрдмэл харьцааБүрдмэл харьаань Програм хангамжийн дахин ашиглагдах чадвар (Software reuseability)-ийг дэмждэг бөгөөд өгүүлбэрзүйн “..........бол ..........тай” буюу “have a” холбоосоор холбогддог.Ойлголт сэргээх ньОХП-д классуудын хоорондын шаталсан харьцааны дараах 2 хэлбэр байдаг.Удамшил харьцаа “... бол... юм”Бүрдмэл харьцаа “...бол...тай”Бүрдмэл нь бодит амьдрал дээр элбэг тохиолддог. Жишээ нь: Person has a heart Computer has a cooler Student has a mobile Teacher has a car
16ЖишээЭхлээдГуанзны ажилчдад зориулсанклассыг үүсгэеpublic abstract class CafeteriaWorker { protected String name; protected int startHour; protected int stopHour; protected CafeteriaWorker(String name, int startHour, int stopHour) { this.name = name; this.startHour = startHour; this.stopHour = stopHour; } public String getName() { return name; } public int getStartHour() { return startHour; } public int getStopHour() { return stopHour; } /** удамшсан класс бүр өөр өөрийнхөөр ажилдаг */ public abstract void work(); /** тухайн ажилтаны ажлын цаг мөн эсэхийг тогтоох */ protected boolean isWorkHour() { int currentHour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); return currentHour >= startHour && currentHour < stopHour; }}“Гуанзны ажилтан” хийсвэр класс Гуанзны ажилтан бүр өөр өөрийн ажилтай тул “ажиллах” гэсэн функцыг хийсвэрээр зарласан байна
29.
17ЖишээодооГуанзны ажилчдын заримтөрлийн албыг үүсгэеpublic class Cashier extends CafeteriaWorker { public Cashier(String name, int startHour, int stopHour) { super(name, startHour, stopHour); } public void work() { if (isWorkHour()) { System.out.println(getName() + "\t will now work at the cashier."); } else { System.err.println(getName() + "\t is not working at this time. " + "Cafeteria should be closed now."); } }}“Кассчин” бол “Гуанзны ажилтан” юм.public class Cleaner extends CafeteriaWorker { public Cleaner(String name, int startHour, int stopHour) { super(name, startHour, stopHour); } public void work() { if (isWorkHour()) { System.out.println(getName() + "\t will now collect the dishes from " + "the dinning area. When finished, " + getName() + " will clean the dishes."); } else { System.err.println(getName() + "\t is not working at this time."); } }}“Цэвэрлэгч” бол “Гуанзны ажилтан” юм.
30.
18ЖишээChefбол онцгой үүрэггүйцэтгэх гуанзны ажилтан юм.Өмнө дурдсан ёсоор олон төрлийн тогооч (chef) байдаг . Ж нь:Baker – Талх, нарийн боов барьдаг тогоочHotMealCook – Нэг, хоёрдугаар хоол бэлтгэдэг тогоочSaladPrep – Зууш салат бэлтгэдэг тогоочMeatPrep –HotDog, CheeseBurger г.м бүтээгдэхүүн бэлтгэдэг тогоочPiroshkiPrep – Пирошки бэлтгэдэг тогоочpublic abstract class Chef extends CafeteriaWorker { protected Chef(String name, int startHour, int stopHour) { super(name, startHour, stopHour); } public void work() { if (isWorkHour()) { doWork(); } else { System.err.println(getName() + "\t is not working at this time."); } } protected abstract void doWork(); protected int getDayOfWeek() { return Calendar.getInstance().get(Calendar.DAY_OF_WEEK); }}“Тогооч” бол “Гуанзны ажилтан” юм.