Metod – bu sinfga tegishli funksiyalardir ,sinfga tegishli funksiyalrni aniqlash uchun ikki yul mavjud .
1) ichki sinf 2) sinfdan tashqari .
Sinf –bu bizning dasturimizda foydalanishimiz mumkin bo’lgan foydalanuvchi belgilaydigan ma’lumot turi va u obyekt tuzuvchisi yoke obketlarni yaratish uchun reja sifatida ishlaydi .
2-Laboratoriya ish
Mavzu: Abstraktlash
Abstrakt sinf ta’rifi. Hech bo’lmasa bitta sof (bo’sh) virtual funksiyaga ega
bo’lgan sinf abstrakt sinf deyiladi.
Quyidagi e’longa ega bo’lgan komponentali funksiya sof virtual funksiya
deyiladi:
virtual
() = 0;
Bu yozuvda « = 0» konstruksiya «sof spesifikator» deyiladi. Sof virtual funksiya ta’rifiga misol:
virtual void fpure (void) = 0;
Sof virtual funksiya hech narsa qilmaydi va uni chaqirib bo’lmaydi. Uning qo’llanilishi – hosila sinflarda uning o’rnini egallovchi funksiyalar uchun asos bo’lish. Abstrakt sinf esa hosila sinf uchun asosiy (bazaviy) sinf sifatida ishlatilishi
mumkin. Agar sof virtual funksiya hosila sinfda to’liq ta’riflanmasa, u hosila sinfda ham sof virtual bo’lib qoladi, natijada hosila sinf ham abstrakt sinf bo’ladi.
Abstrakt sinfni faqat boshqa sinf ajdodi sifatida ishlatish mumkin:
Ba’zi sinflar abstrakt tushunchalarni ifodalaydi va ular uchun ob’ekt yaratib bo’lmaydi. Bunday sinflar biror hosila sinfda ma’noga ega bo’ladi:masalan,
class Abstract
{
public:
virtual void draw() = 0;
};
class Derived : public Abstract
{
public:
void draw() { cout « "Salom.";}
};
int main( void )
{
Derived d;
Abstract a;
return 0;
}
Agar sof virtual funksiya hosila sinfda to’liq ta’riflanmasa, u hosila sinfda ham sof virtual bo’lib qoladi, natijada hosila sinf ham abstrakt sinf bo’ladi.
class Abstract
{
virtual int f() = 0;
virtual float g(float) = 0;
};
class Derived : class Abstract{
int f();
};
int main (void){
Abstract a; //hato
Derived d; // hato
}
Abstrakt sinflar realizasiya detallarini aniqlashtirmasdan faqat interfeysni ko’rsatish uchun ishlatiladi. Masalan, operasion tizimda qurilma drayveri abstract sinf sifatida berilishi mumkin:
class character_device {
public:
virtual int open() = 0;
virtual int close(const char*) = 0;
virtual int read(const char*, int) = 0;
virtual int write(const char*, int) = 0;
virtual int ioctl(int ...) = 0;
// ...
};
Drayverlar character_device sinfining ajdodlari sifatida kiritilishi mumkin.Abstrakt sinf turidagi o’zgaruvchi yaratib bo’lmaydi, lekin abstrakt sinf turidagi ko’rsatkich yaratish mumkin. Bu ko’rsatkichga abstrakt sinf abstract bo’lmagan turli avlodlari adresini qiymat sifatida berib, abstrakt usulga mos turli usullarni chaqirish mumkin.
Abstraksiya. Garchi ob’ektga mo’ljallangan tillar inkapsulyasiyalashdan foydalanishga yordam bersa-da, biroq ular inkapsulyasiyalashni kafolatlamaydi. Tabe va ishonchsiz kodni yaratib qo’yish oson. Samarali inkapsulyasiyalash -sinchkovlik bilan ishlab chiqish hamda abstraksiya va tajribadan foydalanish natijasi. Inkapsulyasiyalashdan samarali foydalanish uchun dasturni ishlab chiqishda avval abstraksiyadan va uning bilan bog’liq konsepsiyalardan foydalanishni o’rganib olish lozim.
7.Notebook nomli sinf yarating.Tarkibida ikki xil konstruktor bo’lsin?
#include
using namespace std;
class notebook{
public:
notebook(){
cout<<"notebook"<
void setname(string n){
name=n; }
string getanme(){
return name; }
private:
string name;
};
int main(){
notebook cc;
return 0;
}
3-Laboratoriya ish
Do'stlaringiz bilan baham: |