Cs203 lab8

2,638 views

Published on

lab8

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,638
On SlideShare
0
From Embeds
0
Number of Embeds
1,251
Actions
Shares
0
Downloads
59
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Cs203 lab8

  1. 1. Объект хандлагат програмчлалын хэл Java Хичээл : CS203 Улирал : 2010 хавар Бэлтгэсэн багш : Д.Энхжаргал Mongolia University of Science & Technology Лабораторийн ажил № 8 Бүрдмэл харьцаа Оноо: 3
  2. 2. Бүрдмэл харьцаа <ul><li>Даалгавар: </li></ul><ul><ul><li>Оюутан бүр бодлогын даалгавраа өөрөө хийсвэрлэж ( өөрийн гэсэн нэг класс сонгож ) бүрдмэл харьцааг хэрэгжүүлсэн жижиг хэмжээний програм бичих. </li></ul></ul><ul><li>Онолын хувд: </li></ul><ul><ul><li>Бүрдмэл харьцааны дараах 2 хэлбэр байдаг гэж үзсэн билээ. Үүнд: Aggregation ба Composition. Энэ 2-ын ялгааг тайлбарлаж бодит амьдралын жишээ гарган тайлбарлаарай ! </li></ul></ul><ul><ul><li>Аливаа класс нь өөр бусад классуудтай удамшил болон бүрдмэл харьцаагаар зэрэг холбогдож болох уу? </li></ul></ul><ul><li>Жич: Бие даалтын ажлаар хөгжүүлэхээр сонгосон сэдвийнхээ хүрээнд хийвэл илүү дөхөмтэй, үр өгөөжтэй. Лекц дээр авч үзсэн онолоо сайтар уншиж, жишээ болгон авсан бүрдмэл харьцааг хэрэгжүүлсэн энгийн хялбар жишээ кодноос санаа аваарай ! </li></ul><ul><li>Шаардлага: </li></ul><ul><li>Бодлогын даалгавар нь бодит амьдралд нийцсэн байх. </li></ul><ul><li>Бүрэлдэхүүн класс </li></ul>
  3. 3. Бүрдмэл харьцаа жишээ <ul><li>class Boat { </li></ul><ul><li>private String stateRegistrationNo; </li></ul><ul><li>private double lenght; </li></ul><ul><li>private String manufacturer; </li></ul><ul><li>private int year; </li></ul><ul><li>public Boat(String aStateRegistrationNo, double aLenght, String aManufacturer, int aYear ) </li></ul><ul><li>{ setStateRegistrationNo(aStateRegistrationNo); </li></ul><ul><li>setLenght(aLenght); </li></ul><ul><li>setManufacturer(aManufacturer); </li></ul><ul><li>setYear(aYear); </li></ul><ul><li>} </li></ul><ul><li> </li></ul><ul><li>public void setLenght(double lenght) </li></ul><ul><li>{ this.lenght = lenght; } </li></ul><ul><li>  </li></ul><ul><li>public void setManufacturer(String manufacturer) </li></ul><ul><li>{ this.manufacturer = manufacturer; } </li></ul><ul><li>  </li></ul><ul><li>public void setStateRegistrationNo(String stateRegistrationNo) </li></ul><ul><li>{ this.stateRegistrationNo = stateRegistrationNo; } </li></ul>
  4. 4. Бүрдмэл харьцаа жишээ <ul><li>public void setYear(int year) </li></ul><ul><li>{ this.year = year; } </li></ul><ul><li>  </li></ul><ul><li>public double getLenght() </li></ul><ul><li>{ return lenght; } </li></ul><ul><li>public String getManufacturer() </li></ul><ul><li>{ return manufacturer; } </li></ul><ul><li>public String getStateRegistrationNo() </li></ul><ul><li>{return stateRegistrationNo; } </li></ul><ul><li>public int getYear() </li></ul><ul><li>{ return year; } </li></ul><ul><li>} </li></ul><ul><li>  </li></ul><ul><li>Энд завь (Boat) классын бичлэгийг тодорхойлсон байна. Одоо Үйлчлүүлэгч (Customer) классыг аьч үзье. </li></ul><ul><li>class Customer { </li></ul><ul><li>private String name; </li></ul><ul><li>private String address; </li></ul><ul><li>private String phoneNo; </li></ul><ul><li>private Boat boat; // Энэ мөрийг анхаар !!! </li></ul>
  5. 5. Бүрдмэл харьцаа жишээ <ul><li>public Customer(String aName, String anAddress, String aPhoneNo ){ </li></ul><ul><li>setName(aName); </li></ul><ul><li>setAddress(anAddress); </li></ul><ul><li>setPhoneNo(aPhoneNo); </li></ul><ul><li>setBoat(null); </li></ul><ul><li>} </li></ul><ul><li>public String getAddress() { </li></ul><ul><li>return address; </li></ul><ul><li>} </li></ul><ul><li>public void setAddress(String address) { </li></ul><ul><li>this.address = address; </li></ul><ul><li>} </li></ul><ul><li>public Boat getBoat() { </li></ul><ul><li>return boat; </li></ul><ul><li>} </li></ul><ul><li>public void setBoat(Boat boat) { </li></ul><ul><li>this.boat = boat; </li></ul><ul><li>} </li></ul><ul><li>public String getName() { </li></ul><ul><li>return name; </li></ul><ul><li>} </li></ul>
  6. 6. Бүрдмэл харьцаа жишээ <ul><li>public void setName(String name) { </li></ul><ul><li>this.name = name; </li></ul><ul><li>} </li></ul><ul><li>public String getPhoneNo() { </li></ul><ul><li>return phoneNo; </li></ul><ul><li>} </li></ul><ul><li>public void setPhoneNo(String phoneNo) { </li></ul><ul><li>this.phoneNo = phoneNo; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>  </li></ul><ul><li>Эндээс харахад Үйлчлүүлэгч (Customer) классын </li></ul><ul><li>Нэр </li></ul><ul><li>Хаяг </li></ul><ul><li>Утасны дугаар гэсэн гишүүн өгөгдлүүдээс гадна </li></ul><ul><li>Завь гэсэн гишүүн объект тодорхойлсон байна. </li></ul><ul><li>Өөрөөр хэлбэл: энэ нь класс хоорондын шаталсан харьцааны нэг жишээ юм. Манай жишээний хувьд Үйлчлүүлэгч ба Завь классуудын хоорондын шаталсан харьцаа үүсч </li></ul><ul><li>байгаа бөгөөд энд Завь класс нь бүрэлдэхүүн класс харин Үйлчлүүлэгч класс нь бүрдмэл буюу үндсэн класс болно. </li></ul><ul><li>  </li></ul><ul><li>Одоо дээрх классуудыг хэрэгжүүлэх жишээ програмыг авч үзье. </li></ul>
  7. 7. Бүрдмэл харьцаа жишээ <ul><li>public class TesterAssociation { </li></ul><ul><li>public static void main(String args[]){ </li></ul><ul><li>Customer firstCustomer= new Customer(&quot;Eleanor&quot;,&quot;Atlanta&quot;,&quot;123-4567&quot;); </li></ul><ul><li>Boat firstBoat=new Boat(&quot;MO34561&quot;,28,&quot;Ttartsan&quot;,2002); </li></ul><ul><li>firstCustomer.setBoat(firstBoat); </li></ul><ul><li>Boat aBoat= firstCustomer.getBoat(); </li></ul><ul><li>  </li></ul><ul><li>System.out.println(&quot;Boat Information is: &quot; </li></ul><ul><li>+aBoat.getStateRegistrationNo()+&quot; &quot; </li></ul><ul><li>+aBoat.getManufacturer()+&quot; &quot; </li></ul><ul><li>+aBoat.getLenght()+&quot; &quot; </li></ul><ul><li>+aBoat.getYear()); </li></ul><ul><li>System.out.println(&quot;Again, Boat Information is: &quot; </li></ul><ul><li>+firstCustomer.getBoat().getStateRegistrationNo()+&quot; &quot; </li></ul><ul><li>+firstCustomer.getBoat().getManufacturer()+&quot; &quot; </li></ul><ul><li>+firstCustomer.getBoat().getLenght()+&quot; &quot; </li></ul><ul><li>+firstCustomer.getBoat().getYear()); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  8. 8. Бүрдмэл харьцаа жишээ <ul><li>Дээрх жишээ програмын </li></ul><ul><li>System.out.println(&quot;Boat Information is: &quot; </li></ul><ul><li>+aBoat.getStateRegistrationNo()+&quot; &quot; </li></ul><ul><li>+aBoat.getManufacturer()+&quot; &quot; </li></ul><ul><li>+aBoat.getLenght()+&quot; &quot; </li></ul><ul><li>+aBoat.getYear()); гэсэн мөрүүдэд </li></ul><ul><li>  </li></ul><ul><li>Завь классын объектод бэхлэн гишүүн функцуудыг дуудах замаар тухайн объектын гишүүндийн утгыг хэвлэж байна. Харин </li></ul><ul><li>  </li></ul><ul><li>System.out.println(&quot;Again, Boat Information is: &quot; </li></ul><ul><li>+firstCustomer.getBoat().getStateRegistrationNo()+&quot; &quot; </li></ul><ul><li>+firstCustomer.getBoat().getManufacturer()+&quot; &quot; </li></ul><ul><li>+firstCustomer.getBoat().getLenght()+&quot; &quot; </li></ul><ul><li>+firstCustomer.getBoat().getYear()); гэсэн мөрүүдэд </li></ul><ul><li>  </li></ul><ul><li>Бүрдмэл классын объект нь түүний бүрэлдэхүүн классын гишүүн функуудыг дуудаж ашиглах боломжтой тул энд Үйлчлүүлэгч классын объектоор дамжуулан Завь классын гишүүн функцуудыг дуудах замаар Завьны гишүүдийг хэвлэж байна. </li></ul><ul><li>  </li></ul><ul><li>Харин эсрэгээрээ бүрэлдэхүүн классаас бүрдмэл (үндсэн) классын гишүүд рүү хандах боломжтой юу? Энэ асуултын хариуг дээрх кодонд жижигхэн өөрчлөлт хийх замаар бие даан туршиж үзээрэй. </li></ul>

×