Va kommunikatsiyalarini rivojlantirish vazirligi muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti



Download 135,71 Kb.
Sana09.01.2020
Hajmi135,71 Kb.
#32731
Bog'liq
Abstrakt sinflar tashkil etish va ulardan foydalanish usullari.

O`ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI

VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI

MUHAMMAD AL-XORAZMIY NOMIDAGI

TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI

Mustaqil ish

Mavzu: Abstrakt sinflar tashkil etish va ulardan foydalanish usullari.

Bajardi: 003 guruh talabasi

Yoqubov A’zamjon

Tekshirdi: Ishniyazov O.

Toshkent – 2019

Ob’yekt - mavhum (abstrakt) mohiyat bo‘lib, u bizni o‘rab turgan haqiqiy olamning tavsiflariga ega. Ob’yektlarni yaratish va ular ustida manipulyatsiyalar olib borish - C++tilining qandaydir alohida imtiyozi emas, balki ob’yektlarning tavsifi va ular ustida o‘tkaziladigan opyeratsiyalarni kodli konstruktsiyalarda o‘zida mujassamlantiradigan dasturlash myetodologiyasi (uslubiyoti) ning natijasidir. Dasturning har bir ob’yekti, har qanday haqiqiy ob’yekt kabi, o‘z atributlari va o‘ziga xos xulq-atvori bilan ajralib turadi. Ob’yektlarni turli katyegoriyalarga ko‘ra tasniflash mumkin: masalan, myening «Cassio» raqamli qo‘l soatim soatlar sinfiga mansub. Soatlarning dasturiy ryealizatsiyasi (ishlatilishi), standart holat sifatida, sizning kompyutyeringizning opyeratsiya tizimi tarkibiga kiradi.

Ba'zan muayyan ob'ektlarni yaratishni nazarda tutmaydigan sinfni aniqlash kerak bo'ladi. Misol uchun, shaklning klassi. Aslida, aniq raqamlar mavjud: kvadrat, to'rtburchak, uchburchak, doira va boshqalar. Biroq, mavhum raqam o'zi mavjud emas. Shu bilan birga, barcha raqamlar uchun umumiy funksiyalarni o'z ichiga olgan umumiy sinfni aniqlash kerak bo'lishi mumkin. Va mavhum sinflar bunday ob'ektlarni tasvirlash uchun ishlatiladi.

Mavhum sinflar-kamida bitta toza virtual funktsiyani bekor qilmasdan o'z ichiga olgan yoki meros qilib olgan sinflar. Mavhum sinf lotin sinflarini qayta aniqlash uchun interfeysni belgilaydi.

Sof virtual funktsiyalar (sof virtual funktsiyalar) nima? Bu ta'rifga ega bo'lmagan vazifalardir. Virtual funktsiyani toza deb aniqlash uchun uning reklamasi "=0"qiymati bilan yakunlanadi. Misol uchun, biz geometrik shaklni ifodalovchi mavhum sinfni aniqlaymiz:
class Figure

{

public:



    virtual double getSquare() = 0;

    virtual double getPerimeter() = 0;

    virtual void showFigureType() = 0;

};

Shakl klassi mavhum, chunki u kamida bitta toza virtual funktsiyani o'z ichiga oladi. Va bu holda, hatto uch bunday vazifalari. Va funktsiyalarning hech biri amalga oshirilmaydi. Amalga oshirish sinflar-merosxo'rlar tomonidan belgilanishi kerak.



Shunday qilib, biz mavhum sinf ob'ektini yaratish mumkin emas:

Figure figure;

Quyidagi dasturni aniqlang:

#include

 

class Figure



{

public:


    virtual double getSquare() =0;

    virtual double getPerimeter() =0;

    virtual void showFigureType()=0;

};

class Rectangle : public Figure



{

private:


    double width;

    double height;

public:

    Rectangle(double w, double h) : width(w), height(h)



    {

    }


    double getSquare() override

    {


        return width * height;

    }


    double getPerimeter() override

    {


        return width * 2 + height * 2;

    }


    void showFigureType()

    {


        std::cout << "Rectangle" << std::endl;

    }


};

class Circle : public Figure

{

private:


    double radius;

public:


    Circle(double r) : radius(r)

    {


    }

    double getSquare() override

    {

        return radius * radius * 3.14;



    }

    double getPerimeter() override

    {

        return 2 * 3.14 * radius;



    }

    void showFigureType()

    {

        std::cout << "Circle" << std::endl;



    }

};

 



int main()

{

    Rectangle rect(30, 50);



    Circle circle(30);

     


    std::cout << "Rectangle square: " << rect.getSquare() << std::endl;

    std::cout << "Circle square: " << circle.getSquare() << std::endl;

 

    return 0;



}

Bu erda mavhum shakl-to'rtburchak (to'rtburchak) va doira (doira) sinfidan merosxo'r ikki sinf mavjud. Vorislar sinflarini yaratishda ularning barchasi aniq virtual funktsiyalar uchun aniq dasturni aniqlab olishlari yoki sof virtual funktsiyani e'lon qilishlari kerak. Ikkinchi holda, lotin sinflari ham mavhum bo'ladi.

Xuddi shu holatda, Circle va Rectangle alohida sinflar bo'lib, barcha virtual funktsiyalarni amalga oshiradi.

Konsol chiqish dasturi:



Shuni ta'kidlash kerakki, mavhum sinf an'anaviy funktsiyalar va o'zgaruvchilarni aniqlay oladi, bir nechta dizaynerlarga ega bo'lishi mumkin, ammo bu mavhum sinfning ob'ektlarini yaratish mumkin emas.

Ushbu mavhumlik klassi asosiy sinf sifatida ishlaydigan

yana bir sinf qanday usulni taniy olishi mumkin?

Agar siz baseClass va Abstract ChildClass esa Base ma'ruza kengaytirilsa ChildClass da abstrakt usulini qo'llashingiz mumkin, aks holda ChildClass abstrac ni ham ko'rishingiz mumkin.

public class ChildClass extends BaseClass{

void display(){

/// Your Implementation here

}

}

abstract class BaseClass{



abstract void display();

}

Sizning savollaringizga javob berish uchun:



Interfeyslar singari, mavhum sinf faqat amalga oshirilmasdan usuli imzosi bo'lishi mumkinmi?

Sizning so'zlaringiz ha yoki javobsiz berish uchun etarli darajada aniq emas. Bir mavhum sinf o'z ichiga usullarini qo'llagan bo'lishi mumkin va qo'llanilmagan abstract usullari bo'lishi mumkin, bu esa abstract deb belgilanishi kerak. abstrakt belgilanmagan bo'lsa, ularni amalga oshirish mumkin bo'lmagan usullari mavjud emas.

Ha bo'lsa: Interfeydan qanday farq qiladi?

Chunki u a'zolarni amalga oshirishga imkon beradi.

Ushbu mavhumlik klassi asosiy sinf sifatida ishlaydigan yana bir sinf qanday usulni taniy olishi mumkin?

Faqat barcha mavhum a'zolarni amalga oshirish kerak.

public abstract class A

{


public abstract void Test();

}

public class B : A



{

public void Test(){ return; }

}

"Abstract class" faqat bitta usul imzoiga ega bo'lishi



mumkinmi? yoki Abstrakt sinf "amaliyotsiz

interfeyslar" faqat usul imzosiga ega bo'lishi mumkinmi? ? Men bosh murabbiy nomim tufayli javobimni o'chirib tashlashga qaror qildim.

qo'shib qo'ydi 04 Iyul 2012 ichida 09:49, muallif Alvin Wong, manba

Thumb qoidasi: mavhum sinflarni ishlatish uchun har doim ega bo'lmagansiz interfeyslarni ishlatish. Interfeys "bir nechta merosga" ruxsat beradi, siz bir nechta interfeyslarni gapiradigan moslamalarni yaratishingiz mumkin. Xulosa klasslari narsalarni yanada arzonlashtiradi, lekin ba'zan ayrim usullarini qo'llash uchun foydalanganda foydali bo'lishi mumkin, ammo barcha mavhum sinf emas.

qo'shib qo'ydi 04 Iyul 2012 ichida 10:21, muallif jpe, manba

8 javoblar

Interface to'liq mavhum bir sinf, Foydalanuvchining profili Faqat imzolarni, dasturlarni, ma'lumotlar a'zolarini anglatmaydi Boshqacha qilib aytganda, abstraktsion sinf kamida bitta mavhum usulga muhtoj Bundan tashqari, uni amalga oshirish mumkin. Bundan tashqari, u vorislariga meros bo'lib o'tadigan ma'lumotlar a'zolarini ham o'z ichiga olishi mumkin.

Voris uni amalga oshirish uchun mavhum usulni bir xil imzo bilan qo'llashi kerak

2

qo'shib qo'ydi 04 Iyul 2012 ichida 09:58 muallif liorafar manba



Abstrakt sinf ilovalarni o'z ichiga olishi mumkin, ammo u shart emas. Bu interfeyslardan farq qiladi.

abstract class classA

{

abstract public void MethodA();



public void MethodB()

{

Console.WriteLine("This is MethodB inside ClassA");



}

}

class classB : classA



{

public override void MethodA()

{

Console.WriteLine("This is MethodA inside class B");



}

}

Agar siz mavhum baz sinfida usulni qo'llayotgan bo'lsangiz va uni keyinroq bekor qilmoqchi bo'lsangiz, uni virtual deb e'lon qilishingiz kerak.



virtual protected void MethodC(){

//this can be overridden

}

2

qo'shib qo'ydi 04 Iyul 2012 ichida 09:58 muallif JonC manba



q1: Xulosa klass usuli va oddiy usullarini o'z ichiga olishi mumkin.

q2: http://docs.oracle.com/javase/tutorial/ dan java/IandI/abstract.html

//this is the abstract class

public abstract class GraphicObject {

abstract void draw();

}

//this is the implementation



class Rectangle extends GraphicObject {

void draw() {



...

}

}
Download 135,71 Kb.

Do'stlaringiz bilan baham:




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish