Object Oriented Design
Лекц 12
Агуулга
• Объект Класс
• Шинж йлдэлү
• йлдэлҮ
• Хамаарал
• Полуморфизм
• Удамшил
• Багц
• йл явц СценарьҮ
• Т л вийн автоматө ө
Програм хангамжийн х гжлийн дэвшилө
ОХТ
• Программ хангамжийг х гж лэхө үү
технологийн чиг хандлага нь б тцийнү
программчлалаас ОХТ-д шилжин х гжижө
байна.
• ОХТ нь ОХШ (шинжилгээ), ОХЗ(зохиомж),
ОХП(программчлал), ОХМс (мэдээллийн
сан) зэргээс б рддэг.ү
ОХТ-ийн дэвшилттэй талууд :
• Зохиомжийг хялбарчлах
• Дахин ашиглагдах
• Тогтвортой
• Найдвартай
• Амьдралын динамик давтамжтай
• Т л в байдал нь хэсэгчлэгдээг йө ө ү
• Ил сайн уялдаатайүү
ОХТ нэр томъёонууд
• Обьект
Объект гэдэг бол бодит-амьдарлын
биет юм буюу т ний хийсвэрлэл.үү
 Класс
Класс нь г гдлийн хийсвэр т р лө ө ө ө
б г д р р хэлбэл класс ньө өө өө өө
хэрэглэгчийн тодорхойлсон т р лө ө юм.
Объект/Класс
• Ер нхий классө
(parameterized class, template)
– Нэг буюу олон формал параметертэй класс
– Параметер
• Т р лө ө
• Хувьсагч болон т р лө ө
– Параметерийн жагсаалт нь хоосон бйж
болохг йү
– Ер нхий классыг хэрэглэхдээ формалө
параметерийг жинхэнэ параметертэй холбох
ёстой
Объект/Класс
• Чингэлэг-класс
– р классын хэсэг овъектуудыг захирнаӨө
– Захирагдаж буй объектэд хандахын тулд энэ нь
йлдл дийг бэлтгэнэү үү
– Чингэлэг = Container-классын объект
– Container-класс нь объектын захиргаажилтыг
хэрэгж лдэгүү
– Т гээмэлү Container
• Цуваа (arrays)
• Олонлог (sets)
Объект/Класс
• Жишээ
– Хүмүүсийг захиран зохицуулах Чингэлэг
Объект/Класс
• Харьцах хэсэг (interface)
Объект/Класс
• Java Класс
– Тодорхойлолт болон хэрэгж лэлтиийгүү
салгаддагг йү
– Класс нь з вх н рийн багц дотроо танилө ө өө
– г й болҮ ү public зарлах
• public class Zaehler { }
Объект/Класс
• Java объект:
– Объект нь з вх н динамикаарө ө (as heap variable
) снэүү
– Санах ой нь garbage collector-оор рөө өө
ч л л гд нө өө ө ө ө
Counter aCounter;
// Объект - Хувьсагч
aCounter = new Counter();
– Объектын заалт снэүү
C++ Загвар функц
Загвар функцийн зарлалтын хэлбэр нь:
Template< параметр_жагсаалт >< буцаах_утга >< функц_нэр >
(< аргумент_жагсаалт >)
{f
< функцийн утга >
}
Жишээлбэл: хоёр обьектын ( хувьсагчийн ) утгыг солих загвар
функцийн
зарлалт нь:
Template< class T > void swap ( T & left , T & right )
{
T temp = left;
Left = right;
Right = temp;
}
Загвар функц
Дээрх функцийг зарласнаар хэрэглэгч ялгаатай
өгөгдлийн төрлийг
ашиглаж болно . Жнь:
main()
{
int a=1, b=2;
swap( a,b ); // swap ( int, int ) биелэлийг үүсгэх
double aa= 101.0, bb=25.0;
swap ( aa,bb ); // swap ( double , double) биелэлийг
үүсгэх
}
Объект/Класс
• Java-гийн ер нхий класс:ө
– Ойлголтыг хэрэгж лээг йүү ү
– Гэхдээ:
– Т р л б рд зориулагдсан рийнө ө ү өө Container-
класс х гж лэх шаардлагг й, учир нь б хө үү ү ү
класс нь цаанаа Object-ээс удамшдаг
• Queue класс сгэнэ, тэр ньүү Object эсвэл т ний дэдүү
классыг захирдаг
• Объектын т рлийг хандсаны дараа засварлахынө
тулд т р л хувиргагчө ө (type casts) шаардлагатай
Объект/Класс
• Java-гийн интерфейс:
– Тогтмол болон хийсвэр йлдл дийг агуулжү үү
болно
– interface гэсэн т лх р гээр зарлагддагү үү ү
– Классууд implements гэсэн т лх р гийг хэрэглэжү үү ү
хэрэгж лдэгүү
– Б б ббөө ө ө
– бб б б б бӨ ө өөө ө ө
– б б б бӨ ө ө ө
Шинж
• Харагдац
– Шинжилгээ
• Шинж д нь классаас гадагш нууц, гэсэн ч рийнүү өө
дэд класстаа харагдана (protected)
– Зохиомж
• Харагдацийг ялгана (visibility)
– public (бусад б х класстү )
– protected (класс дотроо м н дэд классуудадө )
– private (з вх н класс дотрооө ө )
Шинж
• Харагдац UML-д
• Зохиомжийн е дэх шинжийн буулгалтү
Шинж
• Хийсвэрлэлт (abstraction)
– чухал хэсгийг олж м н чухал бишийг орхих йлө ү
явц
– Бас загвар эсвэл тодорхой нцг с харсанааө өө
хийсвэрлэлт гэж нэрлэж болно
• Нууцлалт (information hiding)
– Объектын т л в болон йлдлийн хэрэгж лэлтө ө ү үү
нь классын гадна харагдахг йү
• Бит мжлэлүү (encapsulation)
– Хамааралтай шинж болон йлдл дийг нэгэнү үү
нэгжид- класс – хадгалах
• Шинж болон йлдлийн хэрэгж лэлт нь гаднаасү үү
харагдахаар байж болно
Шинж
• Java-гийн шинж
– Элемент (field)
– Харагдвар
• public - б гдэдү
• protected – ижил багцад б гдэд, гадна з вх н дэд класстү ө ө
• private – класс дотроо
• стандарт: Багц дотроо б гдэд харагдана, гадагш б гдэдү ү
харагдахг йү
• Шинжийн анхны утгыг байгуулагч функцээр
public Circle ()
{
isVisible = false;
}
Circle aCircle;
aCircle = new Circle();
Шинж
• Java-гийн класс шинж
– static гэж нэрлэнэ
– статик анхны утга олголт
classCircle
{
static int count = 0;
...
}
auto болон static хувьсагчид
#include<iostream.h>
void count (void);
void main () {
cout << “main () функцийн эхлэл... n “;
count ();
count ();
count ();
count ();
count ();
cout << “main () функц дуусав. n”;
}
void count (void) {
int au=1; // С++ нь функц ажиллах б рт 1 гэсэн утга олгоно.ү
static int st=1; // С++ нь эхний удаа л 1 гэсэн утга олгоно.
cout << “count () дуудагдахад au=”<<au<<”st “ << st <<’n’;
st++;
au++;
}
йлдэлҮ
• Харагдвар
– private – з вх н ижил классын йлдэлээрө ө ү
дуудагдана
– protected - рийн классын болон т ний дэдөө үү
классын йлдлээр дуудагданаү
– public – б х класс юмуу эсвэл т нийү үү
объектуудаар дуудагдана
йлдэлҮ
• йлдлийн хэрэгж лэлтҮ үү
– Тухайн программчлалын хэлэнд Ярианы
хэлний тайлбар рг тг л.ө ө ө
– Шаардлагатай бол мн х болон дараахө ө
н хц лийн тайлбарө ө
• мн х н хц лӨ ө ө ө (precondition)
– йлдэл идэвхжихээс мн биелэсэн байх ёстой н хц лҮ ө ө ө ө
• Дараах н хц лө ө (postcondition)
– йлдэлийн н л г р гарсан рчл лтийн тайлбарҮ ө өө өө өө ө
йлдэлҮ
• Хийсвэр йлдэлү
– З вх н сигнатураас б тнэө ө ү
• йлдлийн нэрҮ
• Б х параметерийн нэр болон т рл дү ө үү
• Буцаах утгын ( р д нү ү ) т р лө ө
– Хэрэгж лэлт байхг йүү ү
– Дэд классуудын ер нхий интерфайсийгө
тодорхойлдог
йлдэлҮ
• UML сигнатур тэмдэглэгээ
– йлдлийн харагдацҮ
(параметерийн жагсаалт): р д нгийн т р лү ү ө ө
{онцлог1, онцлог2, ...}
– Харагдац [+ | # | - ]
– Параметрийн жагсаалт
Т рлийн нэр: Т р лө ө ө = анхны утга, ...,
• Т р лө ө = [in | out | inout ]
– р д нҮ ү
• йлдэл нь утга буцаахг й бол орхиж болноҮ ү
йлдэлҮ
• Шинжилгээнээс зохиомжид
– Шинжилгээ
• Application concept-ийн ойлголтод чухал йлдл дийгү үү
бичнэ
– Зохиомж
• Програмд агуулагдсан б х йлдл дийг бичнэү ү үү
(Administration operation-аас бусад)
йлдэлҮ
• Java-гийн йлдэлү
– Арга (method)
– Харагдвар
• public – б гдэд харагданаү
• protected – Багц дотроо б гдэд, нээс гадагшү үү
з вх н дэд классуудадө ө
• private – Класс дотроо
• Стандарт : Багц дотор б гдэд харагдана, гадагшү
б гдэд харагдахг йү ү
йлдэлҮ
class Circle
{
protected Point center;
protected int radius;
protected boolean isVisible;
protected static int count; // Class-Attr.
public void зурах() { ... }
public void зөөх(Point new) { ... }
public void ихэсгэх(int factor) { ... }
public void багасгах(int factor) { ... }
protected void устгах() { ... }
public static int getCount(){ ... }
// Class-Operations
}
йлдэлҮ
• Java-гийн байгуулагч
– Объектэд анхны утга олгоход хэрэглэгдэнэ
– Нэг класст олон байгуулагч боломжтой
• р параметерийн жагсаалттайӨө (overloading)
• Java-д устгагч байхг йү
– Санах ойн ч л л лтө өө ө garbage collector – аар
• Далд ажиллах б г д заалтг й объектыг олдогө өө ү
• Тэр объектыг тэмдэглээд, устгадаг.
йлдэлҮ
class Circle
{ protected boolean isVisible; ....
public Circle() // Constructor 1
{
isVisible = false;
}
public Circle (int x, int y) // Constructor 2
{
isVisible = false;
Centre.setX(x);
Centre.setY(y);
}
}
aCircle = new Circle();
Удамшил
Удамшлын олон т р л байна.ө ө
•Энгийн – 1 классаас 1класс сэхийг хэлнэ.үү
•Нийлмэл – Олон классаас нэг класс сэхүү
•Шаталсан – 1 классаас олон класс сж байвал. Жишээ ньүү
УБИС-аас КПХ, БУ, Сув...
•Холимог – Нийлмэл ба шаталсан удамшилуудын б рдэл.ү
•Олон т вшинт – Удамшссан классаас удамшиж байвал олонү
т вшинт гэнэ.ү
Хамаарал
• Удирдалт (Navigation):
–Шинжилгээ
• Бүх хамаарал bidirectional
–Зохиомж
• uni- or bidirectional хэрэгжүүлэх үү гэдгээ
тодорхойлно.
• Хамаарлын удирдалт (navigability)
Хамаарал
• unidirectional vs. bidirectional хамаарал
Хамаарал
• Хамаарлыг заагчаар хэрэгж лэхүү
– Объектын хоорондх хамаарлын чиглэл б хнийгү
заагчаар хэрэгж лнэүү
– Объект б хэн рийнх хамааралтайү өө өө
объектыг мэднэ
– Холбоосыг з рчилг й холбох ба таслахдааө ү
йлдлийн тусламжтайгаар хийх шаардлагатайү
– Харьцах тоо 0..1 эсвэл 1
• ганц заагч
– 1 ээс их
• олон заагч
– Эрэмбэг й болү
• Set, Bag г.м.-ийн чингэлэг класс хэрэглэнэ
Хамаарал
• Жишээ нь
– 2 чиглэлт (bidirectional) хамаарлыг заагчаар
хэрэгж лэхүү
Хамаарал
• Хамаарлыг классаар хэрэгж лэхүү
– Объектын хоорондхи хамаарлыг бие даасан
классын тусламжтайгаар хэрэгж лнэүү
• Класс диаграмд зурагдахг йү
– Хамааралтай объектууд нэг нэгнээ мэдэхг йү
• Хэн хэнтэйгээ холбогдсон гэдэг мэдээлэл з вх нө ө
холбоос объектэд нууцлагдана
– Хамаарлыг с лд нь нэмж г х шаардлагатайүү ө ө
м н классууд нь рчл гд х ёсг й болө өө ө ө ү
тохиромжтой
Хамаарал
• Жишээ нь
– 2 чиглэлт (bidirectional) хамаарлыг холбоос
объектээр хэрэгж лэхүү
Хамаарал
• Composition
– Б хлээс хэсэг р удирдлага заавал байнаү үү
– Б хэлд хамааралтай йлдл д нь рийнү ү үү өө
хэсг дэдээүү
– Б хэл болонү composition-ны хэсг дийг нэгжүү
болгж авч знэү
• Т гжихү / Нээх
• Эрх эдлэлт
– Хэсг д нь бусадтай харилцан хандах м нүү ө
хэсг дийг сгэхдээ дандаа агуулагчүү үү
объектээр хийгдэнэ
Хамаарал
• Composition хэрэгж лэхүү
– бодит хэлбэрээр агуулагдсан
– заагчаар
class Бүхэл {
ХэсэгА нэгХэсэгА;
ХэсэгВ *нэгХэсэгВ;
public:
Бүхэл(){ нэгХэсэгВ = new ХэсэгВ();
}
~ Бүхэл(){ delete нэгХэсэгВ;}
};
Хамаарал
• Java-д хамаарлыг хэрэгж лэхүү (k<=1)
class Ajiltan
{ protected Tasag ajilladag;
public void link(Tasag tsg)
{
ajilladag = tsg;
}
public void unlink(Tasag tsg)
{ .....
ajilladag = null;
}
public Tasag getLink()
{
return ajilladag;
}
}
Хамаарал
Java-д хамаарлыг хэрэгж лэхүү (k > 1)
Vector класс хэрэглэнэ
class Tasag
{ protected Vector hamtragch;
public void link(Ajiltan ajl)
{
hamtragch.addElement(ajl);
}
public void unlink(Ajiltan ajl)
{
hamtragch.removeElement(ajl);
}
public Ajiltan getLink(int pos)
{
Ajiltan ajl = (Ajiltan)hamtragch.elementAt(pos)
return ajl;
}
}

Ood lesson12.1 ---------

  • 1.
  • 2.
    Агуулга • Объект Класс •Шинж йлдэлү • йлдэлҮ • Хамаарал • Полуморфизм • Удамшил • Багц • йл явц СценарьҮ • Т л вийн автоматө ө
  • 3.
    Програм хангамжийн хгжлийн дэвшилө
  • 4.
    ОХТ • Программ хангамжийгх гж лэхө үү технологийн чиг хандлага нь б тцийнү программчлалаас ОХТ-д шилжин х гжижө байна. • ОХТ нь ОХШ (шинжилгээ), ОХЗ(зохиомж), ОХП(программчлал), ОХМс (мэдээллийн сан) зэргээс б рддэг.ү
  • 5.
    ОХТ-ийн дэвшилттэй талууд: • Зохиомжийг хялбарчлах • Дахин ашиглагдах • Тогтвортой • Найдвартай • Амьдралын динамик давтамжтай • Т л в байдал нь хэсэгчлэгдээг йө ө ү • Ил сайн уялдаатайүү
  • 6.
    ОХТ нэр томъёонууд •Обьект Объект гэдэг бол бодит-амьдарлын биет юм буюу т ний хийсвэрлэл.үү  Класс Класс нь г гдлийн хийсвэр т р лө ө ө ө б г д р р хэлбэл класс ньө өө өө өө хэрэглэгчийн тодорхойлсон т р лө ө юм.
  • 7.
    Объект/Класс • Ер нхийклассө (parameterized class, template) – Нэг буюу олон формал параметертэй класс – Параметер • Т р лө ө • Хувьсагч болон т р лө ө – Параметерийн жагсаалт нь хоосон бйж болохг йү – Ер нхий классыг хэрэглэхдээ формалө параметерийг жинхэнэ параметертэй холбох ёстой
  • 8.
    Объект/Класс • Чингэлэг-класс – рклассын хэсэг овъектуудыг захирнаӨө – Захирагдаж буй объектэд хандахын тулд энэ нь йлдл дийг бэлтгэнэү үү – Чингэлэг = Container-классын объект – Container-класс нь объектын захиргаажилтыг хэрэгж лдэгүү – Т гээмэлү Container • Цуваа (arrays) • Олонлог (sets)
  • 9.
    Объект/Класс • Жишээ – Хүмүүсийгзахиран зохицуулах Чингэлэг
  • 10.
  • 11.
    Объект/Класс • Java Класс –Тодорхойлолт болон хэрэгж лэлтиийгүү салгаддагг йү – Класс нь з вх н рийн багц дотроо танилө ө өө – г й болҮ ү public зарлах • public class Zaehler { }
  • 12.
    Объект/Класс • Java объект: –Объект нь з вх н динамикаарө ө (as heap variable ) снэүү – Санах ой нь garbage collector-оор рөө өө ч л л гд нө өө ө ө ө Counter aCounter; // Объект - Хувьсагч aCounter = new Counter(); – Объектын заалт снэүү
  • 13.
    C++ Загвар функц Загварфункцийн зарлалтын хэлбэр нь: Template< параметр_жагсаалт >< буцаах_утга >< функц_нэр > (< аргумент_жагсаалт >) {f < функцийн утга > } Жишээлбэл: хоёр обьектын ( хувьсагчийн ) утгыг солих загвар функцийн зарлалт нь: Template< class T > void swap ( T & left , T & right ) { T temp = left; Left = right; Right = temp; }
  • 14.
    Загвар функц Дээрх функцийгзарласнаар хэрэглэгч ялгаатай өгөгдлийн төрлийг ашиглаж болно . Жнь: main() { int a=1, b=2; swap( a,b ); // swap ( int, int ) биелэлийг үүсгэх double aa= 101.0, bb=25.0; swap ( aa,bb ); // swap ( double , double) биелэлийг үүсгэх }
  • 15.
    Объект/Класс • Java-гийн ернхий класс:ө – Ойлголтыг хэрэгж лээг йүү ү – Гэхдээ: – Т р л б рд зориулагдсан рийнө ө ү өө Container- класс х гж лэх шаардлагг й, учир нь б хө үү ү ү класс нь цаанаа Object-ээс удамшдаг • Queue класс сгэнэ, тэр ньүү Object эсвэл т ний дэдүү классыг захирдаг • Объектын т рлийг хандсаны дараа засварлахынө тулд т р л хувиргагчө ө (type casts) шаардлагатай
  • 16.
    Объект/Класс • Java-гийн интерфейс: –Тогтмол болон хийсвэр йлдл дийг агуулжү үү болно – interface гэсэн т лх р гээр зарлагддагү үү ү – Классууд implements гэсэн т лх р гийг хэрэглэжү үү ү хэрэгж лдэгүү – Б б ббөө ө ө – бб б б б бӨ ө өөө ө ө – б б б бӨ ө ө ө
  • 17.
    Шинж • Харагдац – Шинжилгээ •Шинж д нь классаас гадагш нууц, гэсэн ч рийнүү өө дэд класстаа харагдана (protected) – Зохиомж • Харагдацийг ялгана (visibility) – public (бусад б х класстү ) – protected (класс дотроо м н дэд классуудадө ) – private (з вх н класс дотрооө ө )
  • 18.
    Шинж • Харагдац UML-д •Зохиомжийн е дэх шинжийн буулгалтү
  • 19.
    Шинж • Хийсвэрлэлт (abstraction) –чухал хэсгийг олж м н чухал бишийг орхих йлө ү явц – Бас загвар эсвэл тодорхой нцг с харсанааө өө хийсвэрлэлт гэж нэрлэж болно • Нууцлалт (information hiding) – Объектын т л в болон йлдлийн хэрэгж лэлтө ө ү үү нь классын гадна харагдахг йү • Бит мжлэлүү (encapsulation) – Хамааралтай шинж болон йлдл дийг нэгэнү үү нэгжид- класс – хадгалах • Шинж болон йлдлийн хэрэгж лэлт нь гаднаасү үү харагдахаар байж болно
  • 20.
    Шинж • Java-гийн шинж –Элемент (field) – Харагдвар • public - б гдэдү • protected – ижил багцад б гдэд, гадна з вх н дэд класстү ө ө • private – класс дотроо • стандарт: Багц дотроо б гдэд харагдана, гадагш б гдэдү ү харагдахг йү • Шинжийн анхны утгыг байгуулагч функцээр public Circle () { isVisible = false; } Circle aCircle; aCircle = new Circle();
  • 21.
    Шинж • Java-гийн классшинж – static гэж нэрлэнэ – статик анхны утга олголт classCircle { static int count = 0; ... }
  • 22.
    auto болон staticхувьсагчид #include<iostream.h> void count (void); void main () { cout << “main () функцийн эхлэл... n “; count (); count (); count (); count (); count (); cout << “main () функц дуусав. n”; } void count (void) { int au=1; // С++ нь функц ажиллах б рт 1 гэсэн утга олгоно.ү static int st=1; // С++ нь эхний удаа л 1 гэсэн утга олгоно. cout << “count () дуудагдахад au=”<<au<<”st “ << st <<’n’; st++; au++; }
  • 23.
    йлдэлҮ • Харагдвар – private– з вх н ижил классын йлдэлээрө ө ү дуудагдана – protected - рийн классын болон т ний дэдөө үү классын йлдлээр дуудагданаү – public – б х класс юмуу эсвэл т нийү үү объектуудаар дуудагдана
  • 24.
    йлдэлҮ • йлдлийн хэрэгжлэлтҮ үү – Тухайн программчлалын хэлэнд Ярианы хэлний тайлбар рг тг л.ө ө ө – Шаардлагатай бол мн х болон дараахө ө н хц лийн тайлбарө ө • мн х н хц лӨ ө ө ө (precondition) – йлдэл идэвхжихээс мн биелэсэн байх ёстой н хц лҮ ө ө ө ө • Дараах н хц лө ө (postcondition) – йлдэлийн н л г р гарсан рчл лтийн тайлбарҮ ө өө өө өө ө
  • 25.
    йлдэлҮ • Хийсвэр йлдэлү –З вх н сигнатураас б тнэө ө ү • йлдлийн нэрҮ • Б х параметерийн нэр болон т рл дү ө үү • Буцаах утгын ( р д нү ү ) т р лө ө – Хэрэгж лэлт байхг йүү ү – Дэд классуудын ер нхий интерфайсийгө тодорхойлдог
  • 26.
    йлдэлҮ • UML сигнатуртэмдэглэгээ – йлдлийн харагдацҮ (параметерийн жагсаалт): р д нгийн т р лү ү ө ө {онцлог1, онцлог2, ...} – Харагдац [+ | # | - ] – Параметрийн жагсаалт Т рлийн нэр: Т р лө ө ө = анхны утга, ..., • Т р лө ө = [in | out | inout ] – р д нҮ ү • йлдэл нь утга буцаахг й бол орхиж болноҮ ү
  • 27.
    йлдэлҮ • Шинжилгээнээс зохиомжид –Шинжилгээ • Application concept-ийн ойлголтод чухал йлдл дийгү үү бичнэ – Зохиомж • Програмд агуулагдсан б х йлдл дийг бичнэү ү үү (Administration operation-аас бусад)
  • 28.
    йлдэлҮ • Java-гийн йлдэлү –Арга (method) – Харагдвар • public – б гдэд харагданаү • protected – Багц дотроо б гдэд, нээс гадагшү үү з вх н дэд классуудадө ө • private – Класс дотроо • Стандарт : Багц дотор б гдэд харагдана, гадагшү б гдэд харагдахг йү ү
  • 29.
    йлдэлҮ class Circle { protected Pointcenter; protected int radius; protected boolean isVisible; protected static int count; // Class-Attr. public void зурах() { ... } public void зөөх(Point new) { ... } public void ихэсгэх(int factor) { ... } public void багасгах(int factor) { ... } protected void устгах() { ... } public static int getCount(){ ... } // Class-Operations }
  • 30.
    йлдэлҮ • Java-гийн байгуулагч –Объектэд анхны утга олгоход хэрэглэгдэнэ – Нэг класст олон байгуулагч боломжтой • р параметерийн жагсаалттайӨө (overloading) • Java-д устгагч байхг йү – Санах ойн ч л л лтө өө ө garbage collector – аар • Далд ажиллах б г д заалтг й объектыг олдогө өө ү • Тэр объектыг тэмдэглээд, устгадаг.
  • 31.
    йлдэлҮ class Circle { protectedboolean isVisible; .... public Circle() // Constructor 1 { isVisible = false; } public Circle (int x, int y) // Constructor 2 { isVisible = false; Centre.setX(x); Centre.setY(y); } } aCircle = new Circle();
  • 32.
    Удамшил Удамшлын олон тр л байна.ө ө •Энгийн – 1 классаас 1класс сэхийг хэлнэ.үү •Нийлмэл – Олон классаас нэг класс сэхүү •Шаталсан – 1 классаас олон класс сж байвал. Жишээ ньүү УБИС-аас КПХ, БУ, Сув... •Холимог – Нийлмэл ба шаталсан удамшилуудын б рдэл.ү •Олон т вшинт – Удамшссан классаас удамшиж байвал олонү т вшинт гэнэ.ү
  • 35.
    Хамаарал • Удирдалт (Navigation): –Шинжилгээ •Бүх хамаарал bidirectional –Зохиомж • uni- or bidirectional хэрэгжүүлэх үү гэдгээ тодорхойлно. • Хамаарлын удирдалт (navigability)
  • 36.
    Хамаарал • unidirectional vs.bidirectional хамаарал
  • 37.
    Хамаарал • Хамаарлыг заагчаархэрэгж лэхүү – Объектын хоорондх хамаарлын чиглэл б хнийгү заагчаар хэрэгж лнэүү – Объект б хэн рийнх хамааралтайү өө өө объектыг мэднэ – Холбоосыг з рчилг й холбох ба таслахдааө ү йлдлийн тусламжтайгаар хийх шаардлагатайү – Харьцах тоо 0..1 эсвэл 1 • ганц заагч – 1 ээс их • олон заагч – Эрэмбэг й болү • Set, Bag г.м.-ийн чингэлэг класс хэрэглэнэ
  • 38.
    Хамаарал • Жишээ нь –2 чиглэлт (bidirectional) хамаарлыг заагчаар хэрэгж лэхүү
  • 39.
    Хамаарал • Хамаарлыг классаархэрэгж лэхүү – Объектын хоорондхи хамаарлыг бие даасан классын тусламжтайгаар хэрэгж лнэүү • Класс диаграмд зурагдахг йү – Хамааралтай объектууд нэг нэгнээ мэдэхг йү • Хэн хэнтэйгээ холбогдсон гэдэг мэдээлэл з вх нө ө холбоос объектэд нууцлагдана – Хамаарлыг с лд нь нэмж г х шаардлагатайүү ө ө м н классууд нь рчл гд х ёсг й болө өө ө ө ү тохиромжтой
  • 40.
    Хамаарал • Жишээ нь –2 чиглэлт (bidirectional) хамаарлыг холбоос объектээр хэрэгж лэхүү
  • 41.
    Хамаарал • Composition – Бхлээс хэсэг р удирдлага заавал байнаү үү – Б хэлд хамааралтай йлдл д нь рийнү ү үү өө хэсг дэдээүү – Б хэл болонү composition-ны хэсг дийг нэгжүү болгж авч знэү • Т гжихү / Нээх • Эрх эдлэлт – Хэсг д нь бусадтай харилцан хандах м нүү ө хэсг дийг сгэхдээ дандаа агуулагчүү үү объектээр хийгдэнэ
  • 42.
    Хамаарал • Composition хэрэгжлэхүү – бодит хэлбэрээр агуулагдсан – заагчаар class Бүхэл { ХэсэгА нэгХэсэгА; ХэсэгВ *нэгХэсэгВ; public: Бүхэл(){ нэгХэсэгВ = new ХэсэгВ(); } ~ Бүхэл(){ delete нэгХэсэгВ;} };
  • 43.
    Хамаарал • Java-д хамаарлыгхэрэгж лэхүү (k<=1) class Ajiltan { protected Tasag ajilladag; public void link(Tasag tsg) { ajilladag = tsg; } public void unlink(Tasag tsg) { ..... ajilladag = null; } public Tasag getLink() { return ajilladag; } }
  • 44.
    Хамаарал Java-д хамаарлыг хэрэгжлэхүү (k > 1) Vector класс хэрэглэнэ class Tasag { protected Vector hamtragch; public void link(Ajiltan ajl) { hamtragch.addElement(ajl); } public void unlink(Ajiltan ajl) { hamtragch.removeElement(ajl); } public Ajiltan getLink(int pos) { Ajiltan ajl = (Ajiltan)hamtragch.elementAt(pos) return ajl; } }