Класс буюу анги
Ц.Төртогтох (morz.shiper@gmail.com)
Магадлан итгэмжлэгдсэн “Идэр” Дээд Сургууль
Мэдээллийн Технологийн тэнхим
Ангийн тухай
• Анги гэдэг нь нууцлагдсан өгөгдөл ба
функцүүдийг багцлан агуулсан өгөгдлийн
нийлмэл төрөл юм.
• Анги нь өгөгдлийн хийсвэр төрөл бөгөөд
өөрөөр хэлбэл анги нь бидний өмнө үзсэн
хэрэглэгчийн тодорхойлсон төрөл бүтэцтэй
нилээд төстэй.
Ангийг зарлах
• class TClass_Name{
– Variable
– Constructor
– Destructor
– Method
• };
Ангийн тухай
• Ангийг Class – нөөц үгээр тодорхойлох бөгөөд энэ нь
хэлбэрийн хувьд struct – тай төстөй. Өгөгдлийн нийлмэл
төрөл юм.
• Ангид зарлагдсан хувьсагчдыг тухайн ангийн гишүүн
өгөгдөл гэнэ.
• Ангид дотор зарлагдсан функцийг ангийн гишүүн функц
гэнэ.
• Анги нөөц үгийн ард ангийн нэрийг өгөх ба ангийн нэрийн
энхний үсэг том ихэнхдээ T үсэг байдаг нь тогтсон заншил
юм.
Ангийн тухай
• Анги нь өгөгдлийн төрөл учираас бусад өгөгдлийн төрлийн
адилаар ашиглаж болно.
• Ангийн төрлийн хувьсагчийг объект гэдэг.
• Ангийн хэдэн ч объектыг програмд зарлан хэрэглэж болно.
• Зарлагдсан объектууд нэг ангийн объектууд боловч өөр өөр
шинж чанар бүхий объектууд үүсдэг
Өгөгдлийн далдлалт
• Өгөгдлийн нууцлалтын чанараараа анги нь бүтэцээс
ялгагддаг.
• Объект хандалтат програмчлалд дараахи хандалтын
тодорхойлогчууд байна.
– Public
– Protected
– Private
Өгөгдлийн далдлалт
Public• Хандах эрхээр тодорхойлогдсон ангийн гишүүдэд
програмын аль ч хэсэгээс хандаж болдог.
Өгөгдлийн далдлалт
Protected
• Хандах эрхтэйгээр тодорхойлогдсон ангийн гишүүнд ангийн
гишүүн функцээс мөн уг ангиас удамшисан ангийн гишүүн
функцээс хандах боломжтой.
Өгөгдлийн далдлалт
Private
• Хандах эрхтэйгээр тодорхойлогдсон ангийн гишүүнд ангийн
гишүүн функц л хандах боломжтой. Ангийн гишүүн функц
дотор л биш бол үндсэн програм болон програмын аль ч
хэсэгээс энэ хандалтын эрхтэй гишүүнд хандаж чадахгүй.
Гишүүн функц
• Гишүүн функцийг Method – гэж нэрлэдэг.
• Гишүүн функц нь ангийн нууцлагдсан гишүүн өгөгдлүүдтэй
харьцах харьцааг хангаж өгдөг
• Ихэнхдээ нээлттэй хандах эрхтэйгээр тодорхойлогдсон
байдаг.
Гишүүн функц
• Гишүүн функцэд хандахдаа мөн л гишүүн өгөгдөлд
хандахын нэгэн адил объектын нэрийн ард цэг тавьж
гишүүн функцийн нэрийг тавьж хандана.
• Санамж Гишүүн функцийг ангиас гадна тодорхойлох бол :: тэмдэгтийг ашиглана. Үүний
дараа {} -хаалтанд фунцийн кодыг бичнэ.
Гишүүн функцийг
зарлах
• class Tpixel{
• public :
• int x;
• int y;
• char c;
• void show();
• };
• void Tpixel :: show()
• { cout <<x<<" "<<y<<" "<<c; }
Гишүүн функцийг
хэрэглэх
• void main(){
• Tpixel p;
• p.x=160;
• p.y=100;
• p.c='k';
• p.show();
• }
Байгуулагч функц
• Байгуулагч функц нь ангийн ( private хандах эрхтэй )
гишүүдэд объектын дамжуулсан утгыг инитализаци хийх
гол үүрэгтэй
• Байгуулагч функцийг байгуулагч функц (Constructor) гэдэг
• Байгуулагч функц нь ангийн нэртэй ижил нэртэй байх ба
хэзээ ч илэрхий дуудагдахгүй
Байгуулагч функц
• Ангийн объект үүсэх үед Байгуулагч функц автоматаар
дуудагдана.
• Анги Байгуулагч функц торхойлоогүй байж болно.
• Санамж . Хэрэв анги Байгуулагч функцээр хангагдаагүй бол С++ нь өөрийн стандарт
байгуулагч функц дуудаж объектыг үүсгэнэ
Байгуулагч функц
• Анги нь нэгээс олон Байгуулагч функц тодорхойлж өгч
болно.
• Байгуулагч функц нь үүссэн объектоо буцаадаг.
• Хэд хэдэн Байгуулагч функцтэй анги зарлах үед тэдгээр нь
хоорондоо параметрийн төрлөөрөө ялгагдаж байх ёстой
Байгуулагч функцийг
зарлах
 class Tpixel{
 public :
 int x; int y; char c;
 public :
 Tpixel();
 void show();
 };
 Tpixel::Tpixel()
 {
 cout <<" Baiguulagch duudagdlaa ";
 } ;
Байгуулагч функцийг
хэрэглэх
• void main(){
• Tpixel p;
• p.x=160;
• p.y=100;
• p.c=10;
p.show();
• }
Байх албагүй
Үр дүн
1. Baiguulagch duudagdlaa
2. 160
3. 100
4. K
Устгагч функц
• Устгагч функц нь объектийн динамик гишүүн өгөгдлийн
санах ойгоос бүрэн чөлөөлөгдөхөд хэрэглэдэг.
• Устгагч функцийг Destructor функц гэдэг.
• Анги ганц Устгагч функцтэй эсвэл устгагч функц байхгүй
байна.
Устгагч функц
• Хэрэв анги Устгагч функцээр хангагдаагүй бол объектийн
мужаас гарахад С ++ нь өөрийн Устгагч функцийг
автоматаар дуудаж объектийн гишүүдийн ашигласан санах
ойг чөлөөлдөг
• Энэ үед анги динамик гишүүн өгөгдөлтэй бол түүнийг санах
ойгоос бүрэн чөлөөлж чадахгүй. Иймээс динамик гишүүн
өгөгдөлтэй ангид
• Устгагч функц тодорхойлсон байх шаардлага зүй ёсоор гарч
ирнэ.
Устгагч функцийг
зарлах
 class Tpixel {
 public :
 int x; int y; char c;
 Tpixel();
 ~Tpixel();
 void show();
 };
 Tpixel::Tpixel() { cout <<" Baiguulagch duudagdlaa "; } ;
 Tpixel::~Tpixel()
 {
 cout <<" Ustgagch duudagdlaa ";
 } ;
 void Tpixel::show() { cout <<x<<" "<<y<<" "<<c; }
Устгагч функцийг
хэрэглэх
• void main(){
• Tpixel p;
• p.x=160;
• p.y=100;
• p.c='k';
• p.show();
• }
Аль хэсэгт нь
хэвлэгдэх вэ ?
Үр дүн
1. Baiguulagch duudagdlaa
2. 160
3. 100
4. K
5. Ustgagch duudagdlaa
This
This заагч буюу объектийн нууц заагч нь объектийг үүсэх үед
автоматаар үүсдэг.
Гишүүн функцийг дуудахад түүний аргументэд объектийн
нууц заагч болох this заагч дамжина.
Энэхүү заагч нь үүссэн объектийн заагч бөгөөд this эсвэл
объект өөрөө юм.
This заагчийг зөвхөн анги дотор бүр тодоруулвал ангийн
гишүүн функц дотор хэрэглэдэг.
This
• This заагчийг ашиглан тухайн объектийн заалт болоод
заагчийг буцаах функц бичиж болно.
1. this *return
идэхитэй объектийн заалтийг
2. this return
идэхитэй объектийн заагчийг
Дүгнэлт
• Анги
• Өгөгдлийн хандалт
• Байгуулагч функц
• Устгагч функц
• This
Танд баярлалаа
Асуулт ?

Lec5 angi

  • 1.
    Класс буюу анги Ц.Төртогтох(morz.shiper@gmail.com) Магадлан итгэмжлэгдсэн “Идэр” Дээд Сургууль Мэдээллийн Технологийн тэнхим
  • 2.
    Ангийн тухай • Ангигэдэг нь нууцлагдсан өгөгдөл ба функцүүдийг багцлан агуулсан өгөгдлийн нийлмэл төрөл юм. • Анги нь өгөгдлийн хийсвэр төрөл бөгөөд өөрөөр хэлбэл анги нь бидний өмнө үзсэн хэрэглэгчийн тодорхойлсон төрөл бүтэцтэй нилээд төстэй.
  • 3.
    Ангийг зарлах • classTClass_Name{ – Variable – Constructor – Destructor – Method • };
  • 4.
    Ангийн тухай • АнгийгClass – нөөц үгээр тодорхойлох бөгөөд энэ нь хэлбэрийн хувьд struct – тай төстөй. Өгөгдлийн нийлмэл төрөл юм. • Ангид зарлагдсан хувьсагчдыг тухайн ангийн гишүүн өгөгдөл гэнэ. • Ангид дотор зарлагдсан функцийг ангийн гишүүн функц гэнэ. • Анги нөөц үгийн ард ангийн нэрийг өгөх ба ангийн нэрийн энхний үсэг том ихэнхдээ T үсэг байдаг нь тогтсон заншил юм.
  • 5.
    Ангийн тухай • Ангинь өгөгдлийн төрөл учираас бусад өгөгдлийн төрлийн адилаар ашиглаж болно. • Ангийн төрлийн хувьсагчийг объект гэдэг. • Ангийн хэдэн ч объектыг програмд зарлан хэрэглэж болно. • Зарлагдсан объектууд нэг ангийн объектууд боловч өөр өөр шинж чанар бүхий объектууд үүсдэг
  • 6.
    Өгөгдлийн далдлалт • Өгөгдлийннууцлалтын чанараараа анги нь бүтэцээс ялгагддаг. • Объект хандалтат програмчлалд дараахи хандалтын тодорхойлогчууд байна. – Public – Protected – Private
  • 7.
    Өгөгдлийн далдлалт Public• Хандахэрхээр тодорхойлогдсон ангийн гишүүдэд програмын аль ч хэсэгээс хандаж болдог.
  • 8.
    Өгөгдлийн далдлалт Protected • Хандахэрхтэйгээр тодорхойлогдсон ангийн гишүүнд ангийн гишүүн функцээс мөн уг ангиас удамшисан ангийн гишүүн функцээс хандах боломжтой.
  • 9.
    Өгөгдлийн далдлалт Private • Хандахэрхтэйгээр тодорхойлогдсон ангийн гишүүнд ангийн гишүүн функц л хандах боломжтой. Ангийн гишүүн функц дотор л биш бол үндсэн програм болон програмын аль ч хэсэгээс энэ хандалтын эрхтэй гишүүнд хандаж чадахгүй.
  • 10.
    Гишүүн функц • Гишүүнфункцийг Method – гэж нэрлэдэг. • Гишүүн функц нь ангийн нууцлагдсан гишүүн өгөгдлүүдтэй харьцах харьцааг хангаж өгдөг • Ихэнхдээ нээлттэй хандах эрхтэйгээр тодорхойлогдсон байдаг.
  • 11.
    Гишүүн функц • Гишүүнфункцэд хандахдаа мөн л гишүүн өгөгдөлд хандахын нэгэн адил объектын нэрийн ард цэг тавьж гишүүн функцийн нэрийг тавьж хандана. • Санамж Гишүүн функцийг ангиас гадна тодорхойлох бол :: тэмдэгтийг ашиглана. Үүний дараа {} -хаалтанд фунцийн кодыг бичнэ.
  • 12.
    Гишүүн функцийг зарлах • classTpixel{ • public : • int x; • int y; • char c; • void show(); • }; • void Tpixel :: show() • { cout <<x<<" "<<y<<" "<<c; }
  • 13.
    Гишүүн функцийг хэрэглэх • voidmain(){ • Tpixel p; • p.x=160; • p.y=100; • p.c='k'; • p.show(); • }
  • 14.
    Байгуулагч функц • Байгуулагчфункц нь ангийн ( private хандах эрхтэй ) гишүүдэд объектын дамжуулсан утгыг инитализаци хийх гол үүрэгтэй • Байгуулагч функцийг байгуулагч функц (Constructor) гэдэг • Байгуулагч функц нь ангийн нэртэй ижил нэртэй байх ба хэзээ ч илэрхий дуудагдахгүй
  • 15.
    Байгуулагч функц • Ангийнобъект үүсэх үед Байгуулагч функц автоматаар дуудагдана. • Анги Байгуулагч функц торхойлоогүй байж болно. • Санамж . Хэрэв анги Байгуулагч функцээр хангагдаагүй бол С++ нь өөрийн стандарт байгуулагч функц дуудаж объектыг үүсгэнэ
  • 16.
    Байгуулагч функц • Ангинь нэгээс олон Байгуулагч функц тодорхойлж өгч болно. • Байгуулагч функц нь үүссэн объектоо буцаадаг. • Хэд хэдэн Байгуулагч функцтэй анги зарлах үед тэдгээр нь хоорондоо параметрийн төрлөөрөө ялгагдаж байх ёстой
  • 17.
    Байгуулагч функцийг зарлах  classTpixel{  public :  int x; int y; char c;  public :  Tpixel();  void show();  };  Tpixel::Tpixel()  {  cout <<" Baiguulagch duudagdlaa ";  } ;
  • 18.
    Байгуулагч функцийг хэрэглэх • voidmain(){ • Tpixel p; • p.x=160; • p.y=100; • p.c=10; p.show(); • } Байх албагүй
  • 19.
    Үр дүн 1. Baiguulagchduudagdlaa 2. 160 3. 100 4. K
  • 20.
    Устгагч функц • Устгагчфункц нь объектийн динамик гишүүн өгөгдлийн санах ойгоос бүрэн чөлөөлөгдөхөд хэрэглэдэг. • Устгагч функцийг Destructor функц гэдэг. • Анги ганц Устгагч функцтэй эсвэл устгагч функц байхгүй байна.
  • 21.
    Устгагч функц • Хэрэванги Устгагч функцээр хангагдаагүй бол объектийн мужаас гарахад С ++ нь өөрийн Устгагч функцийг автоматаар дуудаж объектийн гишүүдийн ашигласан санах ойг чөлөөлдөг • Энэ үед анги динамик гишүүн өгөгдөлтэй бол түүнийг санах ойгоос бүрэн чөлөөлж чадахгүй. Иймээс динамик гишүүн өгөгдөлтэй ангид • Устгагч функц тодорхойлсон байх шаардлага зүй ёсоор гарч ирнэ.
  • 22.
    Устгагч функцийг зарлах  classTpixel {  public :  int x; int y; char c;  Tpixel();  ~Tpixel();  void show();  };  Tpixel::Tpixel() { cout <<" Baiguulagch duudagdlaa "; } ;  Tpixel::~Tpixel()  {  cout <<" Ustgagch duudagdlaa ";  } ;  void Tpixel::show() { cout <<x<<" "<<y<<" "<<c; }
  • 23.
    Устгагч функцийг хэрэглэх • voidmain(){ • Tpixel p; • p.x=160; • p.y=100; • p.c='k'; • p.show(); • } Аль хэсэгт нь хэвлэгдэх вэ ?
  • 24.
    Үр дүн 1. Baiguulagchduudagdlaa 2. 160 3. 100 4. K 5. Ustgagch duudagdlaa
  • 25.
    This This заагч буюуобъектийн нууц заагч нь объектийг үүсэх үед автоматаар үүсдэг. Гишүүн функцийг дуудахад түүний аргументэд объектийн нууц заагч болох this заагч дамжина. Энэхүү заагч нь үүссэн объектийн заагч бөгөөд this эсвэл объект өөрөө юм. This заагчийг зөвхөн анги дотор бүр тодоруулвал ангийн гишүүн функц дотор хэрэглэдэг.
  • 26.
    This • This заагчийгашиглан тухайн объектийн заалт болоод заагчийг буцаах функц бичиж болно. 1. this *return идэхитэй объектийн заалтийг 2. this return идэхитэй объектийн заагчийг
  • 27.
    Дүгнэлт • Анги • Өгөгдлийнхандалт • Байгуулагч функц • Устгагч функц • This
  • 28.