1. Do'stona funktsiyalar Do'stona sinflar


Download 66.48 Kb.
Sana06.02.2023
Hajmi66.48 Kb.
#1171223
Bog'liq
Do\'stlar sinflar. Do\'stona xususiyatlar


Mavzu: Do'stlar sinflar. Do'stona xususiyatlar. Do'stlar haqida qoidalar. Operatorning haddan tashqari yuklanishi: element funktsiyasi va do'st funktsiyasi.
Reja:
1. Do'stona funktsiyalar
2. Do'stona sinflar
3. Operatorni yuklanishi

Sinflar sizga oddiy asboblar yordamida foydali komponentlardan tuzish imkonini beradi, bu esa ularni amalga oshirish tafsilotlarini mavhumlashtirishga imkon beradi.


Ma'lumotlar va operatsiyalar birgalikda aniq bir ob'ektni tashkil qiladi va ular protsessual dasturlashda bo'lgani kabi, dastur davomida ham "bo'yalgan" emas.
Kod va ma'lumotlarni lokalizatsiya qilish dasturiy ta'minotning ko'rinishini yaxshilaydi.
Axborotni inkassulyatsiya qilish sizning eng muhim ma'lumotlaringizni ruxsatsiz kirishdan himoya qiladi.
OYD kengaytiriladigan tizimlarni yaratishga imkon beradi. Bu OYDning eng muhim afzalliklaridan biri va bu yondashuvni an'anaviy dasturlash usullaridan ajratib turadi. Kengayish degani, mavjud tizimni hech qanday o'zgartirishlar kiritmasdan, yangi komponentlar bilan ishlashga imkon beradi. Komponentlar ish vaqtida qo'shilishi mumkin.
Tur kengaytmasi va natijada paydo bo'ladigan o'zgaruvchan polimorfizm birinchi navbatda quyidagi holatlarda foydalidir.
Ma'lumotlarning heterojen tuzilmalarini qayta ishlash. Dasturlar ob'ektlar turini o'rganishga qiynalmasdan ishlashi mumkin. Istalgan vaqtda yangi ko'rinishlar qo'shilishi mumkin.
Ish paytida xatti -harakatni o'zgartiring. Ish paytida bitta ob'ektni boshqasiga almashtirish mumkin. Bu ushbu ob'ekt ishlatiladigan algoritmning o'zgarishiga olib kelishi mumkin.
Umumiy komponentlarni amalga oshirish. Algoritmlarni shu qadar umumlashtirish mumkinki, ular allaqachon bir nechta turdagi ob'ektlar bilan ishlay oladilar.
Yarim tayyor mahsulotlarni olib kelish. Muayyan dastur uchun komponentlarni sozlash shart emas. Ular kutubxonada yarim tayyor mahsulotlar sifatida saqlanishi va kerak bo'lganda turli tayyor mahsulotlarga kengaytirilishi mumkin.
Ramkaning kengayishi. Domenning ilovadan mustaqil qismlari ramka sifatida qo'llanilishi va ilovaga xos qismlarni qo'shish orqali kengaytirilishi mumkin.
Amalda, mavjud komponentlar endi yangi talablarga javob bermasligi sababli, dasturiy ta'minotni qayta ishlatishga erishib bo'lmaydi. OYD bizga mavjud mijozlarni buzmasdan, bu maqsadga erishishga yordam beradi, bu esa qayta ishlatiladigan komponentlardan maksimal darajada foydalanish imkonini beradi.
Biz boshqa loyihalarga foydali bo'lishi mumkin bo'lgan rivojlanish vaqtini qisqartiramiz.
Qayta foydalanish mumkin bo'lgan komponentlar odatda yangi ishlab chiqilganlarga qaraganda ancha kam xatolarni o'z ichiga oladi, chunki ular bir necha bor sinovdan o'tgan.
Komponentni bir vaqtning o'zida bir nechta mijoz ishlatsa, uning kodiga kiritilgan yaxshilanishlar bir vaqtning o'zida u bilan ishlaydigan ko'plab dasturlarga ijobiy ta'sir ko'rsatadi.
Agar dastur standart komponentlarga tayanilsa, uning tuzilishi va foydalanuvchi interfeysi bir xil bo'ladi, bu tushunishni osonlashtiradi va ishlatishni osonlashtiradi.
2. OYDning kamchiliklari
Ob'ektga yo'naltirilgan dasturlash to'rt narsani bilishni talab qiladi.
(1) sinflar, merosxo'rlik va dinamik bog'lanish kabi asosiy tushunchalarni tushunish. Modul tushunchasi va mavhum ma'lumotlar turlari bilan tanish bo'lgan dasturchilar uchun bu minimal kuch talab qiladi. Ma'lumotni inkassulyatsiyasini hech qachon ishlatmaganlar uchun bu dunyoqarashning o'zgarishini anglatishi mumkin va o'rganishga ko'p vaqt ketishi mumkin.
(2) Qayta foydalanish dasturchidan katta sinf kutubxonalari bilan tanishishni talab qiladi. Va bu hatto yangi dasturlash tilini o'rganishdan ham qiyinroq bo'lishi mumkin. Sinf kutubxonasi - bu aslida yuzlab turdagi va minglab operatsiyalarni o'z ichiga oladigan virtual til. Masalan, Smalltalk -da, amaliy dasturlash bilan shug'ullanishdan oldin, uning ko'plab kutubxonalarini o'rganishingiz kerak. Va bu ham vaqt talab etadi.
(3) Sinflarni loyihalash ulardan foydalanishdan ko'ra ancha qiyin. Sinfni loyihalash, xuddi tilni loyihalash kabi, katta tajribani talab qiladi. Bu takroriy jarayon, bu erda siz o'zingizning xatolaringizdan o'rganishingiz kerak.
(4) Sinflarni "sezmay" turib o'qish juda qiyin. Faqat ozgina tajribaga ega bo'lganingizda, OYD yordamida ishlashda o'zingizni ishonchli his qila olasiz.
Ko'rib turganimizdek, asosiy tushunchalarni o'zlashtirishga urinish unchalik katta emas, lekin sinf kutubxonalari va ulardan foydalanish masalasida bu juda muhim bo'lishi mumkin.
Sinflarni amalga oshirish tafsilotlari odatda noma'lum bo'lganligi sababli, dasturchi, agar u ma'lum bir sinfni tushunmoqchi bo'lsa, hujjatlarga va ishlatilgan nomlarga tayanishi kerak. O'z sinfingizni yozishdan saqlanib qolgan vaqt, mavjud sinfni tushunish uchun qisman (ayniqsa, ta'lim boshida) sarflanishi kerak.
Sinflarni hujjatlashtirish protsedura va modullarga qaraganda qiyinroq. Har qanday usulni bekor qilish mumkin bo'lganligi sababli, hujjatlarda faqat berilgan usul nima bo'lishi kerakligi emas, balki u qanday kontekstda chaqirilgani ham ko'rsatilishi kerak. Axir, bekor qilingan usullar odatda mijoz tomonidan emas, balki ramkaning o'zi tomonidan chaqiriladi. Shunday qilib, dasturchi berilgan usul chaqirilganda qanday shartlar bajarilishini bilishi kerak. Bo'sh bo'lgan mavhum usullar uchun hujjatlar hatto bekor qilingan usul qanday maqsadda ishlatilishi kerakligini ham ko'rsatishi kerak.
Murakkab sinflar ierarxiyasida maydonlar va usullar odatda turli darajalardan meros bo'lib o'tadi. Qaysi sohalar va usullar ma'lum bir sinfga tegishli ekanligini aniqlash har doim ham oson emas. Ushbu ma'lumotni olish uchun sizga sinf navigatorlari kabi maxsus vositalar kerak bo'ladi. Agar ma'lum bir sinf uzaytirilsa, xabarni asosiy sinfga o'tkazishdan oldin har bir usul odatda qisqartiriladi. Amalni bajarish bir necha sinflarga bo'linadi va uning qanday ishlashini tushunish uchun biz butun kodni diqqat bilan ko'rib chiqishimiz kerak.
3. OYDning kelajagi
Ob'ektga yo'naltirilgan dasturlash omon qoladimi yoki tez orada yo'q bo'lib ketadigan modami?
Sinflar eng zamonaviy dasturlash tillariga yo'l topdi. Bu faqat ular qolishga tayyor ekanligini ko'rsatadi. Yaqin kelajakda darslar har bir dasturchi uchun standart tushunchalar to'plamiga aylanadi, xuddi ko'pchilik yigirma yil oldin qiziq bo'lgan dinamik ma'lumotlar tuzilishi va rekursiyadan foydalanadi. Shu bilan birga, sinflar boshqalar qatori yangi qurilishdir. Biz ular qanday vaziyatlarga mos kelishini aniqlashimiz kerak va faqat shu erda biz ulardan foydalanamiz. Muayyan vazifa uchun to'g'ri vositani tanlash har bir hunarmand uchun va undan ham ko'proq har bir muhandis uchun zarurdir.
OYD ko'pchilikni eyforiya holatiga olib keladi. Bu erda va u erdagi reklamalar aql bovar qilmaydigan narsalarni va'da qiladi, hatto ba'zi tadqiqotchilar OYDni dasturiy ta'minotni ishlab chiqishning barcha muammolarini hal qila oladigan dard deb bilishga moyil ko'rinadi. Vaqt o'tishi bilan bu eyforiya asta -sekin kamayadi. Bir muncha vaqt umidsizlikdan so'ng, odamlar, ehtimol, OYD haqida gapirishni to'xtatib qo'yishadi, xuddi bugungi kunda siz hech kimdan tizimli dasturlash haqida eshitmaysiz. Ammo darslar odatiy holga aylanadi va biz nihoyat ularning nima ekanligini tushunishimiz mumkin: modulli va kengaytiriladigan dasturiy ta'minotni yaratishga yordam beradigan komponentlar.
Ishning maqsadi quyidagi amallarni bajaradigan dastur yaratishdir: 1. Dasturni ishga tushirgandan so'ng "Zarni siljiting" yozuvi paydo bo'ladi.

Guruch. 16.
2. "Zarni siljitish" tugmachasini bosganingizda 0 - 6 oralig'idagi nuqtalarni aks ettiruvchi xabar paydo bo'ladi.

Guruch. 17.
3. Dasturdan chiqish uchun sarlavha satridagi yopish tugmasini bosing.
Dasturni ishlab chiqish rejasining tavsifi
1. Yangi loyihani oching.
2. Formaga komponentalar misollarini joylashtiring: Label and Button.
3. Quyidagi tarzda davom eting:
3 -jadval.

Tanlangan ob'ekt

Ob'ekt inspektori yorlig'i

Mulk nomi / hodisa nomi

Harakat

Forml

Xususiyatlari

Sarlavha

"Zarni siljitish" shaklining nomini belgilash

Yorliq 1

Xususiyatlari

Sarlavha

"Zarni siljiting" yorlig'i uchun matnni kiriting

Tugma!

Xususiyatlari

Sarlavha

"O'likni o'girish" tugmachasining nomini belgilash

Voqealar

OnClick

ЬаЬе11.Сариоп:= ШТо8и"(п);

4. Loyihani saqlang, ishga tushiring va sinab ko'ring. Dasturning bo'lagi
procedure TForml.ButtonlClick(Sender: TObject); var n: Integer;
begin
n := random (6) + 1 ;
Label1.Caption: = IntToStr (n); oxiri; oxiri.
5. Создать функцию, отображающую числовые значения граней. Function Kubic (Sides:Integer): Integer;
begin
If Sides >= 1 then begin
Result := random (Sides) +1 ; end else begin
Result :=0;
end;
End;
Muammo
Oldingi darslarda biz sizning sinfingiz ma'lumotlari maxfiy bo'lishi kerakligi haqida gapirgan edik . Ammo, agar sizda ushbu sinf bilan ishlaydigan, lekin uning tarkibida bo'lmagan sinf va funksiya bo'lsa, vaziyat yuzaga kelishi mumkin . Masalan, ma'lumotlarni saqlaydigan sinf va bu ma'lumotlarni ekranda ko'rsatadigan funksiya (yoki boshqa sinf) mavjud. Sinf kodi va chiqish funktsiyasining kodi ajratilgan bo'lsa -da (kodni saqlashni soddalashtirish uchun), chiqish funktsiyasining kodi sinf ma'lumotlari bilan chambarchas bog'liq. Shuning uchun, sinf a'zolarini shaxsiy qilish orqali biz kerakli effektga erisha olmaymiz.
Bunday vaziyatda ikkita variant mavjud:
Sinf usullarini ochiq qiling va ular orqali funksiya sinf bilan o'zaro aloqada bo'ladi. Biroq, bu erda bir nechta nuanslar mavjud. Birinchidan, bu ommaviy usullarni aniqlash kerak bo'ladi, bu vaqt talab etadi va ular sinf interfeysini buzadi. Ikkinchidan, darsda siz har doim ochiq bo'lishi shart bo'lmagan va tashqaridan kirishni ta'minlaydigan usullarni ochishingiz kerak bo'ladi.
Do'stona sinflar va do'stona funktsiyalardan foydalaning, ular yordamida sinfning shaxsiy ma'lumotlariga kirish bilan xulosa chiqarish funktsiyalarini taqdim etishingiz mumkin. Bu xulosa chiqarish funktsiyasiga sinf a'zolarining barcha o'zgaruvchilari va usullariga to'g'ridan -to'g'ri kirishga imkon beradi, shu bilan birga sinf tanasidan tashqaridagi boshqa barcha funktsiyalar uchun sinf ma'lumotlariga shaxsiy kirishni saqlab qoladi! Bu darsda biz buni qanday amalga oshirilishini ko'rib chiqamiz.
Do'stona xususiyatlar

Do'stona funktsiya - bu sinf a'zolariga xuddi shu sinf a'zosidek kiradigan funktsiya. Boshqa barcha jihatlarda do'stlik funktsiyasi odatiy vazifadir. Bu oddiy funktsiya yoki boshqa sinfning usuli bo'lishi mumkin. Do'st funktsiyasini e'lon qilish uchun sinf do'sti qilmoqchi bo'lgan funktsiya prototipi oldidagi do'st kalit so'zidan foydalaning . Siz buni sinfning ochiq yoki shaxsiy zonasida e'lon qilishingiz muhim emas. Masalan:



class Anything
{
private:
int m_value;
public:
Anything() { m_value = 0; }
void add(int value) { m_value += value; }
// Делаем функцию reset() дружественной классу Anything
friend void reset(Anything &anything);
};
// Функция reset() теперь является другом класса Anything
void reset(Anything &anything)
{
// И мы имеем доступ к закрытым членам объектов класса Anything
anything.m_value = 0;
}
int main()
{
Anything one;
one.add(4); // добавляем 4 к m_value
reset(one); // сбрасываем m_value в 0
return 0;
}

Bu erda biz Anything sinfining ob'ektini oladigan va m_valueqiymatini belgilaydigan reset () funktsiyasini e'lon qildik 0. Reset () hech narsaning a'zosi bo'lmaganligi uchun reset () funktsiyasi odatda biror narsaning shaxsiy a'zolariga kira olmaydi. Biroq, bu funktsiya Anything sinfiga do'st bo'lgani uchun, u Anything shaxsiy a'zolariga kirish huquqiga ega.
Shuni esda tutingki, biz Anything ob'ektini reset () funktsiyasiga parametr sifatida berishimiz kerak. Buning sababi, reset () funktsiyasi sinf usuli emas. Bu * ko'rsatgichi yo'q va ob'ektni uzatishdan tashqari, u sinf bilan o'zaro aloqa qila olmaydi.
Yana bir misol:

class Something
{
private:
int m_value;
public:
Something(int value) { m_value = value; }
friend bool isEqual(const Something &value1, const Something &value2);
};
bool isEqual(const Something &value1, const Something &value2)
{
return (value1.m_value == value2.m_value);
}

Bu erda biz isEqual () funktsiyasini Something sinfiga do'st deb e'lon qildik. IsEqual () funktsiyasi nimadir sinfining ikkita ob'ektini parametr sifatida oladi. IsEqual () nimadir sinfining do'sti bo'lgani uchun, funksiya Something klassi ob'ektlarining barcha shaxsiy a'zolariga kira oladi. IsEqual () funktsiyasi ikkita ob'ektning a'zo o'zgaruvchilarining qiymatlarini solishtiradi va trueagar ular teng bo'lsa qaytaradi .

Do'stona funktsiyalar va bir nechta sinflar


Funktsiya bir vaqtning o'zida bir nechta sinflar uchun do'st bo'lishi mumkin, masalan:

#include
class Humidity;
class Temperature
{
private:
int m_temp;
public:
Temperature(int temp=0) { m_temp = temp; }
friend void outWeather(const Temperature &temperature, const Humidity &humidity);
};
class Humidity
{
private:
int m_humidity;
public:
Humidity(int humidity=0) { m_humidity = humidity; }
friend void outWeather(const Temperature &temperature, const Humidity &humidity);
};
void outWeather(const Temperature &temperature, const Humidity &humidity)
{
std::cout << "The temperature is " << temperature.m_temp <<
" and the humidity is " << humidity.m_humidity << '\n';
}
int main()
{
Temperature temp(15);
Humidity hum(11);
outWeather(temp, hum);
return 0;
}

Bu erda diqqat qilish kerak bo'lgan ikkita narsa bor. Birinchidan, outWeather () funktsiyasi har ikkala sinf uchun ham do'st bo'lgani uchun, u ikkala sinfning shaxsiy a'zolariga kira oladi. Ikkinchidan, yuqoridagi misolda quyidagi qatorga e'tibor bering:

1

class Humidity;

Bu sinfning prototipi, bu kompilyatorga namlik sinfini biroz keyinroq belgilashimizni aytadi. Bu chiziqsiz, kompilyator Temperatura sinfidagi do'stona outWeather () funktsiyasining prototipini tahlil qilishda namlik nima ekanligini bilmaydigan xatoga yo'l qo'yadi. Sinf prototiplari funktsional prototiplar bilan bir xil vazifani bajaradi: ular kompilyatorga keyinchalik aniqlanadigan, lekin hozirda ishlatilishi kerak bo'lgan narsalar haqida aytib beradi. Biroq, funktsiyalardan farqli o'laroq, sinflar qaytish turi yoki parametrlariga ega emas, shuning uchun ularning prototiplari juda ixchamdir: ключевое слово class + имя класса + ;(masalan class Anything;).

Do'stona darslar

Bir sinf boshqa sinfga do'stona munosabatda bo'lishi mumkin. Bu birinchi sinfning barcha a'zolariga ikkinchi sinfning shaxsiy a'zolariga ruxsat beradi, masalan:


#include
class Values
{
private:
int m_intValue;
double m_dValue;
public:
Values(int intValue, double dValue)
{
m_intValue = intValue;
m_dValue = dValue;
}
// Делаем класс Display другом класса Values
friend class Display;
};
class Display
{
private:
bool m_displayIntFirst;
public:
Display(bool displayIntFirst) { m_displayIntFirst = displayIntFirst; }
void displayItem(Values &value)
{
if (m_displayIntFirst)
std::cout << value.m_intValue << " " << value.m_dValue << '\n';
else // или сначала выводим double
std::cout << value.m_dValue << " " << value.m_intValue << '\n';
}
};
int main()
{
Values value(7, 8.4);
Display display(false);
display.displayItem(value);
return 0;
}

Display klassi Values ​​sinfining do'sti bo'lgani uchun, Display a'zolaridan har biri maxfiy Values ​​a'zolariga kira oladi. Dasturni bajarish natijasi:
8.4 7
Do'stona darslar haqida eslatmalar :
Birinchidan, Displey qadriyatlarning do'sti bo'lsa ham, Displey qiymatlar ob'ektlarining * ko'rsatgichiga to'g'ridan -to'g'ri kira olmaydi.
Ikkinchidan, agar Displey qadriyatlarning do'sti bo'lsa ham, bu qadriyatlar ham Displeyning do'sti degani emas. Agar siz ikkala sinfni do'stona qilishni xohlasangiz, har biri qarama -qarshi sinfni do'st sifatida ko'rsatishi kerak. Nihoyat, agar A sinf B va B C do'sti bo'lsa, bu A sinfining do'sti degani emas.
Do'stona funktsiyalar va sinflardan foydalanganda ehtiyot bo'ling, chunki bu inkapsulyatsiya tamoyillarini buzishi mumkin . Agar bitta sinf tafsilotlari o'zgarsa, do'stlar sinfining tafsilotlari ham o'zgarishga majbur bo'ladi. Shunday qilib, do'stona funktsiyalar va sinflar sonini va ulardan foydalanishni cheklang.

Do'stona usullar


Butun sinfni do'stona qilish o'rniga, biz faqat sinfning ba'zi usullarini do'stona qilishimiz mumkin. Ularning deklaratsiyalari oddiy do'st funktsiyalariga o'xshaydi, faqat имяКласса::boshida prefiks qilingan usul nomi bundan mustasno (masalan, Display::displayItem()).
Display :: displayItem () usulini Values ​​sinfiga qulay qilish uchun avvalgi misolimizni qayta tuzamiz. Biz quyidagilarni qilishimiz mumkin edi:

class Display; // предварительное объявление класса Display
class Values
{
private:
int m_intValue;
double m_dValue;
public:
Values(int intValue, double dValue)
{
m_intValue = intValue;
m_dValue = dValue;
}
// Делаем метод Display::displayItem() другом класса Values
friend void Display::displayItem(Values& value); // ошибка: Values не видит полного определения класса Display
};
class Display
{
private:
bool m_displayIntFirst;
public:
Display(bool displayIntFirst) { m_displayIntFirst = displayIntFirst; }
void displayItem(Values &value)
{
if (m_displayIntFirst)
std::cout << value.m_intValue << " " << value.m_dValue << '\n';
else // или выводим сначала double
std::cout << value.m_dValue << " " << value.m_intValue << '\n';
}
};

Biroq, bu ishlamaydi. Usulni sinfga qulay qilish uchun kompilyator do'stona usul aniqlangan sinfning to'liq ta'rifini (faqat uning prototipini emas) ko'rishi kerak. Tuzuvchi ketma -ket kod satrlarini ko'rib chiqish jarayonida Display sinfining to'liq ta'rifini ko'rmagan, lekin uning usulining prototipini ko'rishga muvaffaq bo'lganligi sababli, bu usulning ta'rif chizig'ida do'st sinfga xato bo'ladi. Qiymatlar (16 -qator).
Siz Display sinfining ta'rifini Values ​​sinfining ta'rifidan yuqoriroq qilishga harakat qilishingiz mumkin:

Xulosa
Do'stona funktsiya / sinf - bu boshqa sinfning shaxsiy a'zolariga xuddi shu sinf a'zosidek kirish huquqiga ega bo'lgan funktsiya / sinf. Bu funksiya / sinfga boshqa sinfni shaxsiy a'zolarini oshkor qilishga majbur qilmasdan boshqa sinf bilan yaqindan ishlash imkonini beradi.


Sinov
Geometriya nuqtasi - bu kosmosdagi pozitsiya. Biz koordinata majmui sifatida 3D kosmosda bir nuqtasini aniqlash mumkin x, yva z. Misol uchun, Point(0.0, 1.0, 2.0)koordinata bir nuqta bo'ladi x = 0.0, y = 1.0va z = 2.0.


Fizikadagi vektor - bu uzunligi va yo'nalishi (lekin pozitsiyasi emas) bo'lgan miqdor. Biz qadriyatlar orqali 3D kosmosda bir vektor belgilashingiz mumkin x, yva zbirga vektor yo'nalishi vakili, x, yva bolta z. Masalan, Vector(1.0, 0.0, 0.0)yo'nalish faqat musbat o'qi bo'ylab xuzunligi bo'yicha ifodalanadigan vektor bo'ladi 1.0.
Nuqtani yangi joyga ko'chirish uchun nuqtaga vektor qo'llanilishi mumkin. Bu vektor yo'nalishini nuqta holatiga qo'shish orqali amalga oshiriladi. Masalan, Point(0.0, 1.0, 2.0) + Vector(0.0, 2.0, 0.0)nuqta beradi (0.0, 3.0, 2.0).
Nuqtalar va vektorlar ko'pincha kompyuter grafikasida ishlatiladi (nuqta - bu shaklning tepalarini ifodalash, vektorlar esa shaklni siljitish uchun ishlatiladi).
Quyidagi dastur asosida:

#include
class Vector3D
{
private:
double m_x, m_y, m_z;
public:
Vector3D(double x = 0.0, double y = 0.0, double z = 0.0)
: m_x(x), m_y(y), m_z(z)
{
}
void print()
{
std::cout << "Vector(" << m_x << " , " << m_y << " , " << m_z << ")\n";
}
};
class Point3D
{
private:
double m_x, m_y, m_z;
public:
Point3D(double x = 0.0, double y = 0.0, double z = 0.0)
: m_x(x), m_y(y), m_z(z)
{
}
void print()
{
std::cout << "Point(" << m_x << " , " << m_y << " , " << m_z << ")\n";
}
void moveByVector(const Vector3D &v)
{
}};
int main()
{
Point3D p(3.0, 4.0, 5.0);
Vector3D v(3.0, 3.0, -2.0);
p.print();
p.moveByVector(v);
p.print();
return 0; }



Ma'lumotni meros qilib oladigan sinfga kichik sinf, hosil qilingan sinf yoki bola deyiladi. Ma'lumotlar yoki usullar meros bo'lib o'tadigan sinf super sinf, asosiy sinf yoki ota -sinf deb ataladi. Ota -ona va bola atamalari merosxo'rlikni tushunishda juda foydali. Bola ota -onasining o'ziga xos xususiyatlarini egallashi bilan, tug'ma sinf asosiy sinfning usullari va o'zgaruvchilariga ega bo'ladi.


Meros foydali, chunki bu sizning kodingizni tuzishga va qayta ishlatishga imkon beradi, bu esa o'z navbatidarivojlanish jarayonini sezilarli darajada tezlashtirishi mumkin. Biroq, merosdan ehtiyotkorlik bilan foydalanish kerak, chunki superklassdagi ko'p o'zgarishlar barcha kichik sinflarga ta'sir qiladi, bu esa kutilmagan oqibatlarga olib kelishi mumkin.


Adabiyotlar
1.Baldor, A. 1986. Arifmetik. Nashrlar va tarqatish kodeksi.
2.Hammasi oddiy sonlar haqida. Do'stona raqamlar. Qayta tiklandi: Númeroprimos.org.
3.Wolfram MathWorld. Eyler qoidasi. Mathworld.wolfram.com saytidan tiklandi.
4.Vikipediya. Do'stona raqamlar. Qayta tiklandi: en.wikipedia.org.
5.Vikipediya. Do'stona raqamlar. Qayta tiklandi: es.wikipedia.org.
Download 66.48 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling