SlideShare a Scribd company logo
1 of 44
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;
}
}

More Related Content

What's hot (15)

Sw203 Lecture7 Method Override
Sw203 Lecture7  Method OverrideSw203 Lecture7  Method Override
Sw203 Lecture7 Method Override
 
Java lecture5
Java lecture5Java lecture5
Java lecture5
 
Sw203 Lecture6 Inheritance
Sw203 Lecture6 InheritanceSw203 Lecture6 Inheritance
Sw203 Lecture6 Inheritance
 
Sw203 Lecture9 Encapsulation
Sw203 Lecture9  EncapsulationSw203 Lecture9  Encapsulation
Sw203 Lecture9 Encapsulation
 
SW203 Lab9
SW203  Lab9SW203  Lab9
SW203 Lab9
 
Gosexem asuult 09
Gosexem asuult 09Gosexem asuult 09
Gosexem asuult 09
 
2
22
2
 
лекц-3
лекц-3лекц-3
лекц-3
 
Lec04
Lec04Lec04
Lec04
 
Java lecture3
Java lecture3Java lecture3
Java lecture3
 
Sw203 Lecture12 Composition
Sw203 Lecture12 CompositionSw203 Lecture12 Composition
Sw203 Lecture12 Composition
 
1
11
1
 
Pl lecture7
Pl lecture7Pl lecture7
Pl lecture7
 
Pl lecture6
Pl lecture6Pl lecture6
Pl lecture6
 
Lec5 angi
Lec5 angiLec5 angi
Lec5 angi
 

Similar to Ood lesson12.1 --------- (20)

объект хандлагат программчлал
объект хандлагат программчлалобъект хандлагат программчлал
объект хандлагат программчлал
 
33
3333
33
 
Ood lesson5
Ood lesson5Ood lesson5
Ood lesson5
 
Lecture4
Lecture4Lecture4
Lecture4
 
Lecture2
Lecture2Lecture2
Lecture2
 
Ooad
OoadOoad
Ooad
 
Lecture5 6
Lecture5 6Lecture5 6
Lecture5 6
 
Diplom udirdamj
Diplom udirdamjDiplom udirdamj
Diplom udirdamj
 
001cclass 120926194905-phpapp02
001cclass 120926194905-phpapp02001cclass 120926194905-phpapp02
001cclass 120926194905-phpapp02
 
Using oop
Using oopUsing oop
Using oop
 
Өгөгдлийн бүтэц
Өгөгдлийн бүтэцӨгөгдлийн бүтэц
Өгөгдлийн бүтэц
 
CS203 Лекц02 Oop
CS203 Лекц02  OopCS203 Лекц02  Oop
CS203 Лекц02 Oop
 
класс диаграм
класс диаграмкласс диаграм
класс диаграм
 
Ood lesson2
Ood lesson2Ood lesson2
Ood lesson2
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2
 
visual programming lecture 2
visual programming lecture 2visual programming lecture 2
visual programming lecture 2
 
Ood lesson6 class
Ood lesson6 classOod lesson6 class
Ood lesson6 class
 
Ogogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lektsOgogdliin sangiin zohion baiguulalt lekts
Ogogdliin sangiin zohion baiguulalt lekts
 
Lecture3 4
Lecture3 4Lecture3 4
Lecture3 4
 

More from International Ulaanbaatar University (20)

Lec8
Lec8 Lec8
Lec8
 
Lec7
Lec7 Lec7
Lec7
 
Lec5 6
Lec5 6 Lec5 6
Lec5 6
 
Lec4
Lec4 Lec4
Lec4
 
Lec3
Lec3 Lec3
Lec3
 
Lec2
Lec2 Lec2
Lec2
 
Lec1
Lec1 Lec1
Lec1
 
Визуаль програмчлал бие даалт
Визуаль програмчлал бие даалтВизуаль програмчлал бие даалт
Визуаль програмчлал бие даалт
 
ОХШЗ - Бие Даалт
ОХШЗ - Бие ДаалтОХШЗ - Бие Даалт
ОХШЗ - Бие Даалт
 
Ood lesson11 sequence
Ood lesson11 sequenceOod lesson11 sequence
Ood lesson11 sequence
 
Ood lesson10 statechart
Ood lesson10 statechartOod lesson10 statechart
Ood lesson10 statechart
 
Ood lesson9 activity
Ood lesson9 activityOod lesson9 activity
Ood lesson9 activity
 
Ood lesson7,8 class
Ood lesson7,8 classOod lesson7,8 class
Ood lesson7,8 class
 
Ood lesson4
Ood lesson4Ood lesson4
Ood lesson4
 
Ood lesson3
Ood lesson3Ood lesson3
Ood lesson3
 
Ood lesson1
Ood lesson1Ood lesson1
Ood lesson1
 
Lec13
Lec13Lec13
Lec13
 
Өгөгдлийн бүтэц 15
Өгөгдлийн бүтэц 15Өгөгдлийн бүтэц 15
Өгөгдлийн бүтэц 15
 
Өгөгдлийн бүтэц 14
Өгөгдлийн бүтэц 14Өгөгдлийн бүтэц 14
Өгөгдлийн бүтэц 14
 
Өгөгдлийн бүтэц 13
Өгөгдлийн бүтэц 13Өгөгдлийн бүтэц 13
Өгөгдлийн бүтэц 13
 

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

  • 2. Агуулга • Объект Класс • Шинж йлдэлү • йлдэлҮ • Хамаарал • Полуморфизм • Удамшил • Багц • йл явц СценарьҮ • Т л вийн автоматө ө
  • 3. Програм хангамжийн х гжлийн дэвшилө
  • 4. ОХТ • Программ хангамжийг х гж лэхө үү технологийн чиг хандлага нь б тцийнү программчлалаас ОХТ-д шилжин х гжижө байна. • ОХТ нь ОХШ (шинжилгээ), ОХЗ(зохиомж), ОХП(программчлал), ОХМс (мэдээллийн сан) зэргээс б рддэг.ү
  • 5. ОХТ-ийн дэвшилттэй талууд : • Зохиомжийг хялбарчлах • Дахин ашиглагдах • Тогтвортой • Найдвартай • Амьдралын динамик давтамжтай • Т л в байдал нь хэсэгчлэгдээг йө ө ү • Ил сайн уялдаатайүү
  • 6. ОХТ нэр томъёонууд • Обьект Объект гэдэг бол бодит-амьдарлын биет юм буюу т ний хийсвэрлэл.үү  Класс Класс нь г гдлийн хийсвэр т р лө ө ө ө б г д р р хэлбэл класс ньө өө өө өө хэрэглэгчийн тодорхойлсон т р лө ө юм.
  • 7. Объект/Класс • Ер нхий классө (parameterized class, template) – Нэг буюу олон формал параметертэй класс – Параметер • Т р лө ө • Хувьсагч болон т р лө ө – Параметерийн жагсаалт нь хоосон бйж болохг йү – Ер нхий классыг хэрэглэхдээ формалө параметерийг жинхэнэ параметертэй холбох ёстой
  • 8. Объект/Класс • Чингэлэг-класс – р классын хэсэг овъектуудыг захирнаӨө – Захирагдаж буй объектэд хандахын тулд энэ нь йлдл дийг бэлтгэнэү үү – Чингэлэг = Container-классын объект – Container-класс нь объектын захиргаажилтыг хэрэгж лдэгүү – Т гээмэлү Container • Цуваа (arrays) • Олонлог (sets)
  • 9. Объект/Класс • Жишээ – Хүмүүсийг захиран зохицуулах Чингэлэг
  • 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 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 классаас олон класс сж байвал. Жишээ ньүү УБИС-аас КПХ, БУ, Сув... •Холимог – Нийлмэл ба шаталсан удамшилуудын б рдэл.ү •Олон т вшинт – Удамшссан классаас удамшиж байвал олонү т вшинт гэнэ.ү
  • 33.
  • 34.
  • 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; } }