Abstract class və method nədir?

Abstract class və method nədir və daha çox nə üçün istifadə olunur, program yazılımında istifadə etmək yararlıdır yoxsa yox, birdə daha bu method və classlardan nə vaxt istifadə olunur?


Yadda saxlama
Kateqoriya: Proqramlaşdırma . , . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (5 cavab var)

(00:41, 11/02/2012 ) #8547

Buradan çox faydalı cavablar oxuya bilərsiniz: http://cavablar.net/2011/03/29/object-yonlu-proqramlasdirma-2/
Qane etməsə yəqin yeni cavab verən ekspertlərimiz olacaq.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(02:39, 11/02/2012 ) #8552

Abstract method ele bir metoddur ki bu metoddan obyekt (instance) yaradabilmersen. Abstract metodu extend eliyende onun bütün abstract metodlarını override elemek mecburiyyetindesen. Bunu esasen bir anlaşma olaraq fikirleşsen daha yaxşı başa düşersen eğer bir abstract metoddan extend edirsense öz sinifivi sen razılıq verirsenki menim sinifim o metodun bütün abstract metodlarına sahib olacaq. Bunların nece işledileceğiyle bağlı bir yazı yazmışdım blogumda aşağdaki linklerden baxabilersen
http://developersland.net/index.php/interfaceabstractfark.html

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(03:15, 11/02/2012 ) #8554

Verdiyim linkde interface ve abstract arasındaki ferq’e deyinerek başa salmağa çalışmışam her ikisini de teze öyrenmeye başlayırsansa bunların iksini de böyük ehtimalla sef salabilersen o nezerden de faydalı olabiler senin üçün. Bele bir misal elave edim fikirleş ki bir proyektde birden çox db işledirsen mysql, oracle, sql vs. istifadeçi bunlardan birini seçmelidi bu veziyette sen her bir database üçün ayrı ayrı if else yazmaq yerine Database adında bir abstract metod yazarsan onun içine de her database de işledilen ortaq funksiyalar üçün abstract bir metod yazarsan meselen connect() metodu. Butun db lerin connect metodu ferqli adlarda olabiler meselen biri baglan() metodu birisi con() metodu… sen bütün bu database siniflerini bizim evvelceden yarattığımız Database adlı metoddan extend elesen onda mysql, oracle vs. hamısının özüne aid bir connect metodu olacaq çükü hammısı bunu ferqli şekilde override edecek.

public class Mysql extends Database
{
    @override
    public void connection()
    {
            //Kod...
     }
}

public class Oracle extends Database
{
    @override
    public void connection()
    {
            //Kod...
     }
}

abstract class Database
{
    abstract public void connect();

    public String errorMesajı()
    {
            return "Error Çıxdı";
     }
}

Kodumuzda ise aşağdaki kimi olsun…

Database db;

if(istifadeci seçir MySql)
{
     db=new Mysql();
}
else if(istifadeçi seçir Oracle)
{
    db=new Oracle();
}

//bundan sonra yazacağın kodlar ise db ile elemek istediyin bütün emeliyyatlar üçün eyni olacaq heresi üçün ayrı ayrı uzun kodlar yazmalı olmayacaqsan.

db.connect();

if(nese problem varsa)
{
    db.errorMesajı();
}

Gördüyün kimi abstract metodun kömeyiynen yazmalı olduğumuz kodlar olduqça azalır. Bundan elave fikir verdinse errorMesajı adında abstract olmayan bir metod da yazdıq. Abstract sinifler abstract olmayan metodlara da sahip olabiler bu metodun içinde de bütün db ler üçün eyni olan error mesajını yazdırırıq. MySql ve Oracle siniflerimiz bu metodları override elemeden olduğu kimi işledebilerler bu da eyni kodları yazmaqdan qurtarır bizi kodumuzu sadeleştirmeye kömek edir.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

    (12:56, 11/02/2012 ) #8571

    Əvvəla cavablandırdığınız üçün təşəkkür edirəm. Sizin izahınızdan onu başa düşdüm ki, abstract class və methodlar sadəcə kod hissəsini sadələşdirmək üçün istifadə edirik. Çəkdiyiniz misaldan da göründüü kimi bir db abstract class yaradır daha sonra isə ondan extendle vərəsə alırıq bəs bunu adi classlada edə bilmərikmi nəticədə yenədə ondan vərəsə götürə bilərik. Abstractı fərqli edən nədi?

    Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(13:22, 11/02/2012 ) #8573

Abstract’ın adi sinifden ferqi odur ki sinifler abstract bir sinifden extends eliyende biz 100% emin olabilirik ki exttends eden sinif abstract sinifin bütün abstract metodlarının içini dolduracaq. Abstract metodlar override edilmemiş compiler icaze vermeyecek kodu run etmeye.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

Cənab cavab verdi - Almanca söz bazası yığmaq (20 saat əvvəl)

rdrobert cavab verdi - Mikrofon süngərinə yazı (1 gün əvvəl)

rdrobert cavab verdi - Yerli virtual olaraq dost tapmaq platforması (1 gün əvvəl)

rdrobert cavab verdi - Almanca söz bazası yığmaq (1 gün əvvəl)

rdrobert cavab verdi - Playstation 4 almaq, Playsation klub açmaq (1 gün əvvəl)

rdrobert cavab verdi - Proqramistin ixtsasi hansidir? (1 gün əvvəl)

Software Developer cavab verdi - Azercell Kabinetim aplikasiyasında İstəSən tarifi haqqında (3 gün əvvəl)

Software Developer cavab verdi - Proqramistin ixtsasi hansidir? (3 gün əvvəl)

byshako cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (13 gün əvvəl)

rdrobert cavab verdi - Honeygain, passiv gelir (14 gün əvvəl)

rdrobert cavab verdi - Xaricdən telefon getirmek (14 gün əvvəl)

rdrobert cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (14 gün əvvəl)

rdrobert cavab verdi - AliExpress, Telefon, Rüsum (14 gün əvvəl)

MiMov cavab verdi - Özəl ip tv qurmaq (23 gün əvvəl)

MiMov cavab verdi - iptv onlayn paket almaq (23 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 607 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23233 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024