folder Tahribat.com Forumları
linefolder Java
linefolder Nesneye Dayalı Programlama



Nesneye Dayalı Programlama

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    seretide
    seretide's avatar
    Kayıt Tarihi: 14/Haziran/2010
    Erkek

    Bilgisayar mühendisliği 3. sınıfa geçtim hala bunun mantığını oturtamadım.C ve java bilgim iyi ama bi program yazarken hangi nesneleri oluşturucam karar veremiyorum.Nesneye dayalı kavramlar vs dersler gördük ama sadece hikaye kısmını öğrettiler.nesneye dayalı programlamayı tam olarak oturtmak için kaynak vs önerisi veya mantığını anlamak için  şu programı yaz gibi önerisi olan varsa bekliyorum


    Saçma
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    BarisYigit'e ulaş "Erhan hocanın nesne yönelinli programlama için hazırladığı efsane bir ppt-pdf"'i var onu iste. Onu oku olayı çözersin kesin.


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ucenmi
    ucenmi's avatar
    Kayıt Tarihi: 25/Mayıs/2011
    Erkek

    aynı sorun bendede var takır takır kod yazıyom ama hala nesneye dayalı programlama ne deseler cevaplayamam :D

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wert
    wert's avatar
    Kayıt Tarihi: 19/Eylül/2005
    Erkek

    benim anladığım şu hacı 

    mesela bir bina yapacaz ne yapariz

    1.katı çiz 

    2.katı çiz

    3.katı çiz

    .....

    53. katı çiz 

    kodlama ile örnek verecek olursak 

    kat[1]=çizim.kat1

    kat[2]=çizim.kat2 

    kat[3]=çizim.kat3 

    kat[4]=çizim.kat4 

    .....

    kat[53]=çizim.kat53 

     

     

    bütün katların planı aynı ise katların hepsini çizmeye gerek varmı

    1 tane ortak plan çizer 

     

     for(int i=1;i<=53;,i++)

    {

    kat[i]=plan; 

     

    mantık bu sanırım  

    bende konuyu takipteyim  merak ediyorum detayları :D


    |sadece aptalların başarısı ders notu ile ölçülür|
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Sscheme
    Sscheme's avatar
    Kayıt Tarihi: 04/Mart/2007
    Erkek

    Object Oriented Programming Concept leri olan

    Polymorphism

    Inheritance

    Encapsulation

    Abstract Class

    Interface

    gibi kavramların ne olduğunu ne fayda sağladığını öğrenip iyice anlayın, daha sonra bu faydalardan yararlanırken farkında olmadan OOP e girmiş olacaksınız.

    En basit haliyle insanların kişisel bilgisini tutan bir uygulamanız var.İnsanları iş gruplarına göre sınıflandıracağız (Marx'ın sınıflı toplumu değil =) yanlış anlaşılmasın )

    Tasarım aşamasında detaya inmek istemiyorsunuz veya büyük projelerde yönetici pozisyonundaki kişiler bu özellikleri belirleyecek programcılar da detayları halledecek bu durumda Interface ler yazılır.

    Interface de sadece değişkenler ve fonksiyon prototipleri bulunur. Mesela;

    public int Calis();

    private int tcno;

    Örneğin İnsan Sınıfını yaratacaksınız ama hiç kimse sadece insan özelliğine sahip olmayacak o yüzden insan sınıfını Abstract Class yapacaksınız. Bu Abstract Class ı ilk olarak yazılan Interface e göre yazacaksınız. Bu ne demek oluyor hiç kimse sadece insan olamayacak ama bu insan sınıfı size kendi üzerinden başka sınıflar yaratma olanağı sağlayacak. İnsan->İşçi İnsan->Memur gibi...

    Ahanda tam burda Inheritance devreye girecek Insan Abstract Class ından İşçi Sınıfını İşçi Sınıfından Özel Sektör İşçi, Taşeron İşçi gibi diğer alt sınıfları türeteceğiz. Bunun bize hem sistem tasarımı ve bütünlüğü hem de benzer sınıfların tekrar tanımlanması gibi kolaylıklar sağladığından bahsetmeme gerek yok sanırım.

    Şimdi başka bir boyuta sıçrayacağız. Özellikle büyük projelerde her şey iç içe geçtiğinde programcıya sadece ihtiyacı olacak olan kısımları (fonksiyon,değişken,veri yapısı, hatta nesne) sunarsınız, diğer kısımları ise yanlış kullanımlara/değişimlere mahal vermemek ve programcı için detayları minimuma indirgemek için saklarsınız aha bu da Encapsulation dır. Az önce bahsettiğimiz İşçinin TC kimlik no su nesne yaratılırken bir defa oluşturulup sonra da değiştirilmemelidir, bunu nasıl yaparım peki

    private int TCNO

    derim önce ki class ın dışında erişim olmasın

    ilk atamayı Constructor fonksiyon içinde yapacağım için

    İşçi(int tc,.......)

    {

    // this nedir araştırırsınız

    this.TCNO = tc;

    }

    derim ilk sefer set eder sonra bir daha dokunmam. Peki bu TCNO dışardan lazım olacak onu nasıl yapacağız derseniz onu da public bir fonksiyonla halledeceğiz.

    public int getTcNo(void)

    {

    return this.TcNo;

    }

    gibi bir public getter fonksiyon yazarak bu konuyu da çözerim. Böylece tcno kişi ilk oluşturulurken belirlenecek ve de class ımızı kullanan uygulama tarafından yanlışlıkla da olsa değiştirilemeyecek.

     

    Son olarak ise Polymorphism olayına gelelim.

    Şimdi ben bu İnsan denen hayvanın Class ını tanımladım, bunun fonksiyonlarının nasıl çalışacağı ise İnsan türüne göre değişecek ve bunu önceden belirleme şansım yok. O zaman İnsan Class ı içinde diye fonksiyonumu tanımlar içini de boş bırakırım.

    public int Calis()

    daha sonra İşçi Sınıfına geldiğimde bu fonksiyonu yazarken

    public int Calis()

    {

    It gibi çalış

    }

    Memur Sınıfına geldiğimde

    public int Calis()

    {

    G*t büyüt

    }

    gibi gibi fonksiyonları yazarım. Bu da olur Polymorphism.

    OOP alışınca bağımlılık yapar, ufacık bi veri yapısı için bile class yazarsınız ki aslında yapılması gereken de budur.

     

    Başka bir örnekle özetlersek

    Hayvan sınıfının genel özelliklerini bir Interface ile tanımlarım

    Hayvan sınıfını Abstract Class olarak yazarım çünkü hiç bir hayvan sadece hayvan olamaz türü vardır.

    Bu sınıftan İnheritance ile Abstract Kedigiller ile türettirim.

    Daha sonra Abstract Kedigillerden İnheritance ile Kedi yi ve Kaplan ı türetirim.

    Kedinin bazı özelliklerini veya fonksiyonlarını read-only yapmak için veya gizlemek için private protected olarak tanımlar böylece Encapsule ederim. Mesela az sonra kullanacağım FareYakala() fonksiyonu kullanıcı tarafından direk çağrılmayacak.

    Kedi.Beslen() fonksiyonu kendi içinden Avlan() fonksiyonunu o da FareYakala() fonksiyonunu çağıracak. Bu durumda programcının görmesi gereken tek fonksiyon Beslen() fonksiyonu. Bu durumda bu fonksiyonları

    public void Beslen(){.....}

    private void Avlan() {.....}

    private void FareYakala(){......}

    şeklinde tanımlarım.

     

    Son olarak da Kedigillerin içi boş olan Avlan() fonksiyonunu kedi ve kaplan için farklı olacaktır. Kedi için

    private void Avlan()

    {

    FareYakala();

    }

    Kaplan için

    private void Avlan()

    {

    CeylanYakala();

    }

    şeklinde tanımlarım, bu da Polymorphism olur.

     

    Atladığım eksik/yanlış belirttiğim bir şey varsa arkadaşlar eklesin bu saatte bu kadar oluyor.

     

     

     

     


    Bütün mesajlarım ve konularım BSD Lisansı"yla lisanslanmıştır.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SinusX
    SinusX's avatar
    Kayıt Tarihi: 14/Aralık/2010
    Erkek

    wert bunu yazdı:
    -----------------------------

    benim anladığım şu hacı 

    mesela bir bina yapacaz ne yapariz

    1.katı çiz 

    2.katı çiz

    3.katı çiz

    .....

    53. katı çiz 

    kodlama ile örnek verecek olursak 

    kat[1]=çizim.kat1

    kat[2]=çizim.kat2 

    kat[3]=çizim.kat3 

    kat[4]=çizim.kat4 

    .....

    kat[53]=çizim.kat53 

     

     

    bütün katların planı aynı ise katların hepsini çizmeye gerek varmı

    1 tane ortak plan çizer 

     

     for(int i=1;i<=53;,i++)

    {

    kat[i]=plan; 

     

    mantık bu sanırım  

    bende konuyu takipteyim  merak ediyorum detayları :D


    -----------------------------

     

    Çok yanlış yerlere girmişsin sen :D 

     

    Sscheme güzel anlatmış aslında o 5 başlığı araştırın en önemlisi OOP nin temeli nesne adı üstünde :))

     

    bi console uygulaması açıp bi class oluşturun adı mesela insan olsun 

    insanin içinde 

    decimal Boy{get; set;}

    int Yas{get; set;}

    string Ad{get; set;}

     olsun bunlar encapsulation oluyor

    eğer oluşturmazsanız default bi construction oluşturur ama biz kendimiz oluşturalım

    ctor yazıp 2 kere tab ' a basıp oluşturuyoruz parantezlerin içine parametreleri yazın

    public insan(int boy,int yas, int ad)

    {

    Boy=boy;

    Yas=yas;

    Ad=ad;

    }

    napmış olduk int,double gibi bi tip belirlemiş olduk c deki structure gibi

    şimdi program.cs e gidip main kısmına 

    Insan insan = new Insan(2.00,23,"sinusx");

    yazarsak insan nesnemizi kullanıma açtık artık insan nesnemizin içindeki fonksiyonlara ve atamalara ulaşabiliriz.

    Console.WriteLine(insan.Yas + insan.Boy + insan.Ad);

    Yaklasık olarak olay bundan ibaret gerekli her durum için nesne açıp atamaları orda yaparsın


    Damnant quod non intelligunt...
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wert
    wert's avatar
    Kayıt Tarihi: 19/Eylül/2005
    Erkek

    bende aynı şeyi demeye çalıştım ama olmadı :D

     


    |sadece aptalların başarısı ders notu ile ölçülür|
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SinusX
    SinusX's avatar
    Kayıt Tarihi: 14/Aralık/2010
    Erkek

    wert bunu yazdı:
    -----------------------------

    bende aynı şeyi demeye çalıştım ama olmadı :D

     


    -----------------------------

    seninkine örnek olarak şey olur mesela senin bina diye bi classın olur diyelim binada neler var katlar katlarda odalar var 

    Bina bina = new Bina(14); diyelim 14 katlı demin dediğim gibi kat sayısını yapıcı fonksiyonda tanımlayalım

    bina.renk = "mavi"; olur mesela

    biz binayı boyadığımızda direk bina sınıfımızdan rengi değiştirebiliriz böylece

    mesela binaya kat eklensin kaçak bide bina sınıfımızda void KatEkle(int x) {Kat += x} olsun 

    bina.KatEkle(1); dersin bi kat daha eklenir vs vs :)


    Damnant quod non intelligunt...
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ltcelik
    ltcelik's avatar
    Kayıt Tarihi: 11/Mayıs/2007
    Erkek

    Önce structure'dan başlamalı sanırım...


    Din Kitaplarını Okuyup Anlayana Ateist, Okuyup Anlamayanlara "dindar" denir... Nikola TESLA.. ben mi? Ne okurum ne anlarım... Kendi kendime de uyuz oluyorum ama olamıyorum.. "Ama efsaneyi çıkarıp atarsan ve yaptıkları eylemlere bakarsan... ..Jedi'ların mirası başarısızlıktır. İkiyüzlülüktür, kibirdir."
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Sscheme
    Sscheme's avatar
    Kayıt Tarihi: 04/Mart/2007
    Erkek

    ltcelik bunu yazdı:
    -----------------------------

    Önce structure'dan başlamalı sanırım...


    -----------------------------

    struct yapısı C kullananlar için faydalı olur ama diğer dilleri kullanan arkadaşlar için çok da gerekli değil.


    Bütün mesajlarım ve konularım BSD Lisansı"yla lisanslanmıştır.
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    Bi ton karışılık olmuş temizliyorum mesajı.

    OOP'un teori kısmında c'deki structure'lara bakarak , memoryde ne yaptığını öğrenmek daha iyi olabilir.Fakat oop kullanımı konusunda yapılacak en net iş sınıflarla çalışmaktır.

    OOP'un bütün özelliklerini kullanacağın en güzel iş bir oyun tasarlamak.Net şekilde oturur.

     

Toplam Hit: 2203 Toplam Mesaj: 16