More Related Content Similar to Лекц 6 - 7 (20) More from Chinzorig Undarmaa More from Chinzorig Undarmaa (20) Лекц 6 - 73. ОХП-ын ухагдахуунууд
Класс – аливаа зүйлийн төсөөлөл юм.
Объект – төсөөллөөс үүссэн бөгөөд дотооддоо далдалсан
өгөгдөл ба тэдгээр өгөгдөлтэй ажиллах үйлдлүүдээс бүтсэн нэгэн
зүйл юм.
5. Класс тодорхойлох
Атрибут нь тодорхой нэг зүйлийн талаар
нэмэлт мэдээлэл хавсаргахад хэрэглэгддэг.
Жишээлбэл:
классын
тухай
нэмэлт
мэдээлэл оруулж болно.
Атрибутуудыг дөрвөлжин хаалтан дотор
таслалаар тусгаарлан бичнэ.
[ClassDesc(Author="Knuth"), ClassDesc(Author="Ja
mes")]
6. Класс тодорхойлох
Классын хандалт хувиргагч нь класс руу
бусад ассемблей, ижил ассемблей, түүнээс
удамшсан классаас яаж хандаж болохыг
заана.
Классын хандалтыг заагаагүй бол үндсэн
internal хандалттай хандалттай болдог.
7. Класс тодорхойлох
Хандалт
Тайлбар
public
Класс руу дурын ассемблейгаас хандаж болно.
protected
Класс дотор тодорхойлогдсон класст
хэрэглэгдэнэ. Хандалт нь агуулагч класс эсвэл
агуулагчаас удамшсан классаар хязгаарлагдана.
internal
Ижил ассемблей дэх классудаас хандаж болно.
private
Класс дотор тодорхойлогдсон класст
хэрэглэгдэнэ. Хандалт нь агуулагч классаар
хязгаарлагдана.
8. Классын гишүүд
Үл өөрчлөгдөх утга.
Нэг const түлхүүр үгээр
тогтмолыг зарлаж болно.
хэд
хэдэн
Тогтмолыг зарлахдаа үндсэн төрлүүдийг
ашиглана.
Объектоор
болохгүй
дамжуулан
Тогтмолын
оноогддог.
утга
нь
тогтмолд
хандаж
хөрвүүлэлтийн
үед
9. Классын гишүүд
using System;
class Conversions {
public const double Cm = 2.54;
public const double Grams = 454.0 , km =
.62 ;
public const string ProjectName =
"Metrics";
}
10. Классын гишүүд
class ShowConversions{
static void Main() {
double pounds, gramWeight;
gramWeight = 1362;
pounds = gramWeight / Conversions.Grams;
Console.WriteLine("{0}
Grams=
Pounds", gramWeight,pounds);
Console.WriteLine("Cm per inch {0}", Conversions.Cm);
Conversions c= new Conversions(); // Create class
// This fails to compile. Cannot access const from object
Console.WriteLine("Cm per inch {0}", c.Cm);
}
}
{1}
11. Классын гишүүд
Өгөгдөл хадгалах хувьсагч
Утга нь ажиллах горимын үед өөрчлөгдөнө.
Талбарын төрлүүд нь үндсэн төрлүүдээр
хязгаарлагдахгүй
Талбарын хувиргагчид
static
Талбар нь объектод биш класст хамаарна.
readonly
Ийм талбарын утга нь зөвхөн байгуулагчаар буюу
зарлалтын үед тодорхойлогдоно.
12. Классын гишүүд
public class Upholstery{
public static readonly Upholstery silk = new Upholstery(15.00, 8);
public static readonly Upholstery wool = new Upholstery(12.00, 6);
public static readonly Upholstery cotton = new Upholstery(9.00, 6);
private double yardPrice;
private int deliveryWeeks;
private Upholstery ( double yrPrice, int delWeeks)
{
yardPrice = yrPrice;
deliveryWeeks = delWeeks;
}
13. Классын гишүүд
public double FabCost(double yards)
{
return yards * this.yardPrice;
}
public int DeliveryTime
{get { return deliveryWeeks;}}
public double PricePerYard
{get {return yardPrice;}}
}
14. Классын гишүүд
Класс дахь утгуудад хандах боломж олгоно.
Классын өгөгдлүүдрүү унших болон бичих
хандалтыг удирдахад ашиглагдана.
Синтакс:
[attributes] <modifier> <data type> <property name>
{
[access modifier] get
{ ...
return(propertyvalue)
}
[access modifier] set
{ ... Code to set a field to the keyword value }
}
15. Классын гишүүд
Value нь пропертид дамжуулсан утгыг заах
далд параметр
Get блок дахь код нь хандагч методын
үүргийг гүйцэтгэнэ. Энэ блокийг орхивол
зөвхөн бичих проперти болно.
Set блок дахь код нь өөрчлөгч методын
үүргийг гүйцэтгэнэ. Энэ блокийг орхивол
зөвхөн унших проперти болно.
16. Классын гишүүд
public class Upholstery {
private double yardPrice;
public double PricePerYard {
get {return yardPrice;}
set {
if ( value <= 0 )
throw new ArgumentOutOfRangeException("Price
must be greater than 0.");
yardPrice = value
}
}
…
}
17. Классын гишүүд
public class Upholstery {
private double yardPrice;
public double PricePerYard {
get {return yardPrice;}
set {
if ( value <= 0 )
throw new ArgumentOutOfRangeException("Price
must be greater than 0.");
yardPrice = value
}
}
…
}
18. Классын гишүүд
Тооцоолол үйлдэл хийх зорилго бүхий
класстай холбогдсон функц
Методуудын цуглуулга
төрхийг тодорхойлно.
нь
классын
зан
Методууд нь өөр хоорондоо толгойн
мэдээлэл болох методын нэр, параметрийн
нэр, төрлөөр ялгагдана.
Метод нь мөн буцах
хувиргагчтай байна.
утга,
хандалт
19. Классын гишүүд
Үзэгдэл
гэдэг
нь
объектын
төлөв
өөрчлөгдсөн тухай бусад класс буюу
объектод мэдээлэх арга
Ө.х. Прогармын ямар нэг функцийг өдөөх нь
үзэгдэл болдог. (хулганы товч дарах, Enter
товч дарах г.м)
Аливаа классын үзэгдлүүд нь хэрэглэгч
програмтай харьцахад үүсдэг үйлдлүүдийг
мэдээлдэг.
Үйлдлүүд нь үзэгдэл болон үзэгдлийг
боловсруулах методуудтай байдаг.
20. Классын гишүүд
Үзэгдлийн өдөөж байгаа нь нийтлэгч, түүнийг
барьж байгаа метод нь захиалагч, эдгээрийг
холбож байгаа объектыг төлөөлөгч гэж нэрлэдэг.
21. Классын гишүүд
Төлөөлөгч
• public delegate void EventHandler(object sender, EventArgs e);
Захиалагч
• this.button1.Click += new System.EventHandler(this.button1_Click);
Нийтлэгч
• private void button1_Click(object sender, EventArgs e) { }
Object төрлийн sender параметр нь үзэгдэл үүсгэгчийг
заана.
EventArgs төрлийн e параметр нь үзэгдэлтэй холбоотой
өгөгдлийг агуулна.
24. Объекттой ажиллах
Объектыг үүсгэх хамгийн нийтлэг загвар нь
үйлдвэрийн арга юм. Энэ нь FCL-д
ашиглагддаг.
Энэ арга нь объектыг
объектыг тодорхойлно.
үйлдвэрлэдэг
Объект үүсгэх бүх нарийн ширийнийг
үйлдвэрлэгч хариуцна, захиалагч нь зөвхөн
ямар объект үүсгэх хүсэлтээ байгаа
үйлдвэрлэгчид хэлнэ.
Үйлдвэрийн загварыг хэрэглэх хэд хэдэн
тохиолдол байдаг.
27. Объекттой ажиллах
Эксепшен боловсруулалтын гол утга нь
тооцоолоогүй нөхцөл үүссэн ч тасралтгүй
ажиллах найдвартай код бүтээхэд оршино.
.NET нь алдааны нөхцөлүүдтэй тэмцэхэд
Эксепшен боловсруулалт (SEH) гэсэн
техникийг ашигладаг.
багш: В.Нямсүрэн
28. Объекттой ажиллах
Алдааны нөхцөл (файл систем, техник эд
анги, фреймворкийн сангаас) үүсэх
Эксепшен
объект
(програмд
тооцоолоогүй онцгой нөхцөл үүсэн
тухай мэдээллийг агуулах объект)
үүсгэж
Урьдчилан бэлдсэн, алдаа боловсруулах
хэсэгрүү дамжуулна. (.NET орчинд
эксепшен объект нь кодын нэг хэсэгт
үүсэж нөгөө хэсэгрүү шидэгддэг. )
багш: В.Нямсүрэн
29. Объекттой ажиллах
Эксепшен нь объект байдлаар програмд дамжуулагдах бөгөөд энэ
объект нь эксепшений тухай мэдээлэл, түүнийг үүсгэсэн ассемблей,
дамжсан замын мэдээллүүдийг агуулна.
Хэрэв шидэгдсэн Эксепшенийг програм барихгүй бол CLR барьж
програмыг тасалдаг.
Эксепшен гарч болзошгүй болон гарсан үед боловсруулах код нь
заавал цуг байх албагүй. Эксепшен боловсруулах код нь тусдаа өөр
класс дотор байж болно.
Эксепшенүүд нь програмын, системийн аль ч түвшинд хэрэглэгддэг.
багш: В.Нямсүрэн
32. Объекттой ажиллах
catch
try
Энэ блок нь ямар төрлийн эксепшен барихыг
заасан шүүлтүүр илэрхийлэл, түүний араас
кодын биеийн хамт тодорхойлогдоно.
Энэ блок дотор бичигдсэн кодыг хамгаалалттай
муж гэж үздэг бөгөөд энэ мужид үүссэн
эксепшенийг
catch
эсвэл
finally
блокт
боловсруулна
Finally
Энэ блок нь эксепшен үүссэн, эс үүссэнээс үл
хамааран төгсгөлийн цэвэрлэгээ хийх кодууд
байрлана.
багш: В.Нямсүрэн
34. Удамшил гэж юу вэ?
Удамшил бол “is-a-kind-of” харьцааг
заадаг.
Олон классууд ижил аттрибут, үйл
ажиллагаатай байснаар кодын дахин
ашиглалт үр дүнтэй болно.
Жишээ нь:
Үйлчлүүлэгч бол “is-a-kind-of” хүн
Ажилчин бол “is-a-kind-of” хүн
35. Классаас хэрхэн удамшуулах
вэ?
Удамшсан класс нь суурь классаас
удамшина.
Шинж байдал,функц,өгөгдөл,үйл
ажиллагаа, үйл явц баригч эд бүгд
удамшиж болно.
Түлхүүр үг
Inherits-Суурь классаас удамшиж буй
Notinheritable-Удамшиж болохгүй
Mustinherit-Классын объект үүсэх ѐсгүй.
Зөвхөн удамшуулж л болно.
36. Полиморфизм гэж юу вэ?
Суурь классаас хамааралтай.
Суурь классын функц нь удамшсан
класст очоод өөрчлөгдөнө
(сайжирна).
Basetex
calculateTex()
Basetex
Basetex
calculateTex()
calculateTex()
37. Класс болон бүтцийг харьцуулах
Класс
Бүтэц
Гишүүн өгөгдөл,функц, шинж
байдал
Гишүүн өгөгдөл,функц, шинж
байдал
Байгуулагч функцтэй
Байгуулагч функц байхгүй
Устгагч функцтэй
Устгагч функцгүй
Удамшуулан сайжирдаг
Удамшил байхгүй
Заалтат төрөл
Утгат төрөл
38. Классыг нэрийн орон зайд
байршуулах
Namespace бол байгууллагын систем
Namespace нь бүрэн заагддаг.
Жишээ нь: system.windows.forms.button
Namespace оруулж ирэхдээ:
Прожектын түвшинд Namespace агуулж буй
DLL файлыг заалтаар оруулж ирснээр
хэрэгжинэ.
Imports түлхүүр үгийг ашиглана.