More Related Content Similar to Ood lesson12.1 --------- Similar to Ood lesson12.1 --------- (20) More from International Ulaanbaatar University More from International Ulaanbaatar University (20) Ood lesson12.1 ---------2. Агуулга
• Объект Класс
• Шинж йлдэлү
• йлдэлҮ
• Хамаарал
• Полуморфизм
• Удамшил
• Багц
• йл явц СценарьҮ
• Т л вийн автоматө ө
4. ОХТ
• Программ хангамжийг х гж лэхө үү
технологийн чиг хандлага нь б тцийнү
программчлалаас ОХТ-д шилжин х гжижө
байна.
• ОХТ нь ОХШ (шинжилгээ), ОХЗ(зохиомж),
ОХП(программчлал), ОХМс (мэдээллийн
сан) зэргээс б рддэг.ү
5. ОХТ-ийн дэвшилттэй талууд :
• Зохиомжийг хялбарчлах
• Дахин ашиглагдах
• Тогтвортой
• Найдвартай
• Амьдралын динамик давтамжтай
• Т л в байдал нь хэсэгчлэгдээг йө ө ү
• Ил сайн уялдаатайүү
6. ОХТ нэр томъёонууд
• Обьект
Объект гэдэг бол бодит-амьдарлын
биет юм буюу т ний хийсвэрлэл.үү
Класс
Класс нь г гдлийн хийсвэр т р лө ө ө ө
б г д р р хэлбэл класс ньө өө өө өө
хэрэглэгчийн тодорхойлсон т р лө ө юм.
7. Объект/Класс
• Ер нхий классө
(parameterized class, template)
– Нэг буюу олон формал параметертэй класс
– Параметер
• Т р лө ө
• Хувьсагч болон т р лө ө
– Параметерийн жагсаалт нь хоосон бйж
болохг йү
– Ер нхий классыг хэрэглэхдээ формалө
параметерийг жинхэнэ параметертэй холбох
ёстой
8. Объект/Класс
• Чингэлэг-класс
– р классын хэсэг овъектуудыг захирнаӨө
– Захирагдаж буй объектэд хандахын тулд энэ нь
йлдл дийг бэлтгэнэү үү
– Чингэлэг = Container-классын объект
– Container-класс нь объектын захиргаажилтыг
хэрэгж лдэгүү
– Т гээмэлү Container
• Цуваа (arrays)
• Олонлог (sets)
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 (з вх н класс дотрооө ө )
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 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
}
30. йлдэлҮ
• Java-гийн байгуулагч
– Объектэд анхны утга олгоход хэрэглэгдэнэ
– Нэг класст олон байгуулагч боломжтой
• р параметерийн жагсаалттайӨө (overloading)
• Java-д устгагч байхг йү
– Санах ойн ч л л лтө өө ө garbage collector – аар
• Далд ажиллах б г д заалтг й объектыг олдогө өө ү
• Тэр объектыг тэмдэглээд, устгадаг.
31. йлдэлҮ
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();
32. Удамшил
Удамшлын олон т р л байна.ө ө
•Энгийн – 1 классаас 1класс сэхийг хэлнэ.үү
•Нийлмэл – Олон классаас нэг класс сэхүү
•Шаталсан – 1 классаас олон класс сж байвал. Жишээ ньүү
УБИС-аас КПХ, БУ, Сув...
•Холимог – Нийлмэл ба шаталсан удамшилуудын б рдэл.ү
•Олон т вшинт – Удамшссан классаас удамшиж байвал олонү
т вшинт гэнэ.ү
37. Хамаарал
• Хамаарлыг заагчаар хэрэгж лэхүү
– Объектын хоорондх хамаарлын чиглэл б хнийгү
заагчаар хэрэгж лнэүү
– Объект б хэн рийнх хамааралтайү өө өө
объектыг мэднэ
– Холбоосыг з рчилг й холбох ба таслахдааө ү
йлдлийн тусламжтайгаар хийх шаардлагатайү
– Харьцах тоо 0..1 эсвэл 1
• ганц заагч
– 1 ээс их
• олон заагч
– Эрэмбэг й болү
• Set, Bag г.м.-ийн чингэлэг класс хэрэглэнэ
39. Хамаарал
• Хамаарлыг классаар хэрэгж лэхүү
– Объектын хоорондхи хамаарлыг бие даасан
классын тусламжтайгаар хэрэгж лнэүү
• Класс диаграмд зурагдахг йү
– Хамааралтай объектууд нэг нэгнээ мэдэхг йү
• Хэн хэнтэйгээ холбогдсон гэдэг мэдээлэл з вх нө ө
холбоос объектэд нууцлагдана
– Хамаарлыг с лд нь нэмж г х шаардлагатайүү ө ө
м н классууд нь рчл гд х ёсг й болө өө ө ө ү
тохиромжтой
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;
}
}