Şimdi Ara

OOP hakkında

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
13
Cevap
0
Favori
567
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
Öne Çıkar
0 oy
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar ne zaman bir projemi oop tekniğiyle yazayım ya da bu sisteme çevireyim desem değitşirecek bir yapı bulamıyorum. Yani hep zaten bu sistemi uyguluyormuşum deyip bırakıyorum çalışmayı. Kesin makalelerde göremediğim bir şey var diyorum ama en sonunda sormayı uygun gördüm çünkü kendi çabalarımla bu farkı anlayamayacağım. Şimdi benim genelde kodlama stilim aşağıdaki gibi. Bunun OOP arasında ne fark var?

    Bir class oluştururum.


    public class urldenOgrenciAl{

    //urlAc adında bir http request yapan url methodu tanımladığımı varsayıyorum.

    public static String ogrenciVer(Integer ogrenciNo){

    String data = urlAc("http://deneme.de/?ogrenciNo=" + ogrenciNo)

    String ogrencim = data.split("<numara>")[1].split("</numara>")[0];

    return ogrencim;

    }
    }


    Şimdi bir class ım daha var ve bundada diğer class ta tanımladığım fonksiyonu kullanıyorum.

    public class anaClass{

    public void deneme(){

    String text = urldenOgrenciAl.ogrenciVer("286");

    //ya da yukarıdaki işlemi şu şekilde yapıyorum.

    urldenOgrenciAl urldenogrencial = new urldenOgrenciAl();

    String text = urldenogrencial.ogrenciVer("286");

    }

    }


    Şimdi OO programlamada fark nerede yani ne yaparsam oop olur ya da ben zaten bu sistemi kullanıyor muyum? Bunu anlayamadım. Farkı göremedim yani.



    _____________________________




  • 1. "urldenOgrenciAl" class ismi kotu bir isimdir, fiilden class ismi kotu bir pratiktir.
    2. Ingilice pratik her zaman daha iyidir.
    3. Class isimleri secerken, Ogrenci, OgrenciYoneticisi tarzinda secmen daha iyi bir pratiktir.

    StudentManager // (Ogrenci Yoneticisi) class ismi
    StudentManager.getStudent(int studentNo) // Setters & Getter iyi bir OOP pratitigidir.
    Student student1 = StudentManager.getStudent(int studentNo); //
    _____________________________
  • quote:

    Orijinalden alıntı: Moribito

    1. "urldenOgrenciAl" class ismi kotu bir isimdir, fiilden class ismi kotu bir pratiktir.
    2. Ingilice pratik her zaman daha iyidir.
    3. Class isimleri secerken, Ogrenci, OgrenciYoneticisi tarzinda secmen daha iyi bir pratiktir.

    StudentManager // (Ogrenci Yoneticisi) class ismi
    StudentManager.getStudent(int studentNo) // Setters & Getter iyi bir OOP pratitigidir.
    Student student1 = StudentManager.getStudent(int studentNo); //


    Anladım. Öneriler için teşekkür ederim. Bir makalede class ları işlem işlem ayırın dediği için böyle bir örnek yazdım.

    Yani teknik olarak çok bir fark yok anladığım kadarıyla. Maksadımız kod tekrarından kurtulmak oluyor sanırım. Bunun haricinde oop' ın kattığı başka faydalar var mı? Yani aslında benim sormak istediğim bu işin oluşturduğumuz prosedürlerden ya da function lardan farkı nedir? Bizer onların veremediği neyi veriyor.
    _____________________________




  • OOP sadece sınıflardan ve metotlardan da ibaret değildir kalıtım ve çok biçimlilik gibi şeyler de önemli

    < Bu ileti tablet sürüm kullanılarak atıldı >
    _____________________________
  • quote:

    Orijinalden alıntı: samplus

    quote:

    Orijinalden alıntı: Moribito

    1. "urldenOgrenciAl" class ismi kotu bir isimdir, fiilden class ismi kotu bir pratiktir.
    2. Ingilice pratik her zaman daha iyidir.
    3. Class isimleri secerken, Ogrenci, OgrenciYoneticisi tarzinda secmen daha iyi bir pratiktir.

    StudentManager // (Ogrenci Yoneticisi) class ismi
    StudentManager.getStudent(int studentNo) // Setters & Getter iyi bir OOP pratitigidir.
    Student student1 = StudentManager.getStudent(int studentNo); //


    Anladım. Öneriler için teşekkür ederim. Bir makalede class ları işlem işlem ayırın dediği için böyle bir örnek yazdım.

    Yani teknik olarak çok bir fark yok anladığım kadarıyla. Maksadımız kod tekrarından kurtulmak oluyor sanırım. Bunun haricinde oop' ın kattığı başka faydalar var mı? Yani aslında benim sormak istediğim bu işin oluşturduğumuz prosedürlerden ya da function lardan farkı nedir? Bizer onların veremediği neyi veriyor.

    OOP gunumuzun en gecerli sistem tasarimlarinin yaratimina yardimci olmustur.

    Abstract classes
    Interfaces
    Encapsulation
    Polymor.
    FactoryClasses
    Singelton
    vs vs..

    saysay bitmez. Bunlarin hepsini okuyarak deneyerek ogreniceksin, yoksa burda anlat anlat bitmez

    OOP ile tasarlanan sistem, cok esnek olur, her an gelistirilebilir, bircok developer arasinda kolayca anlasabilir, takim calismasinda kolaylik saglar, sistem daha guvenilir olur, bakimi daha kolaydir, anlat anlat bitmez, Allah tasarlayandanda bulandanda razi olsun.
    _____________________________




  • quote:

    Orijinalden alıntı: Moribito

    quote:

    Orijinalden alıntı: samplus

    quote:

    Orijinalden alıntı: Moribito

    1. "urldenOgrenciAl" class ismi kotu bir isimdir, fiilden class ismi kotu bir pratiktir.
    2. Ingilice pratik her zaman daha iyidir.
    3. Class isimleri secerken, Ogrenci, OgrenciYoneticisi tarzinda secmen daha iyi bir pratiktir.

    StudentManager // (Ogrenci Yoneticisi) class ismi
    StudentManager.getStudent(int studentNo) // Setters & Getter iyi bir OOP pratitigidir.
    Student student1 = StudentManager.getStudent(int studentNo); //


    Anladım. Öneriler için teşekkür ederim. Bir makalede class ları işlem işlem ayırın dediği için böyle bir örnek yazdım.

    Yani teknik olarak çok bir fark yok anladığım kadarıyla. Maksadımız kod tekrarından kurtulmak oluyor sanırım. Bunun haricinde oop' ın kattığı başka faydalar var mı? Yani aslında benim sormak istediğim bu işin oluşturduğumuz prosedürlerden ya da function lardan farkı nedir? Bizer onların veremediği neyi veriyor.

    OOP gunumuzun en gecerli sistem tasarimlarinin yaratimina yardimci olmustur.

    Abstract classes
    Interfaces
    Encapsulation
    Polymor.
    FactoryClasses
    Singelton
    vs vs..

    saysay bitmez. Bunlarin hepsini okuyarak deneyerek ogreniceksin, yoksa burda anlat anlat bitmez

    OOP ile tasarlanan sistem, cok esnek olur, her an gelistirilebilir, bircok developer arasinda kolayca anlasabilir, takim calismasinda kolaylik saglar, sistem daha guvenilir olur, bakimi daha kolaydir, anlat anlat bitmez, Allah tasarlayandanda bulandanda razi olsun.

    amin amin

    yazdığınız terimleri bir araştırayım.
    _____________________________




  • oop iflerden kurtarir seni.

    en basitinden soyle bir ornek yapalim:

    duz mantik ile gidersek soyle yaparsin bunu buyuk ihtimal.

    string hayvan
    if hayvan == kedi ise eylemler.miyavla()
    else if hayvan == kopek ise eylemler.hafla()
    else if hayvan == kus ise eylemler.ot()

    gibi

    oop ile programlarsak

    Hayvan, Kus, Kedi , Kopek birer classdir. ve hayvan classinin abstract bir eylem() metodu vardir. kus kedi kopek bu class i ana class olarak implemente ettiginde ototmatik olarak eylem() metodunu doldurman gerekir.

    daha sonra hayvan.eylem() ile calistirdiginda o anda hayvan hangi class ise onun eylemini yapar. dana gibi if yazmaktan kurtulursun. ayrica ileride baska bir hayvan eklemen gerektiginde if e girip bir kosul daha eklemezssin. direk class olusturup hayvani implemente edersin. bu da projene onceki yaziklarini degistirmeden ekstra seyler katmani kolaylastirir. zaten amac da bug olmadigi surece olabilidignce kodunu silmeden ilerlemektir. tabi burada dogru duzgun bir tasarim gerekiyor proje icin. isin muhendisligi burada devreye giriyor. o yuzden programcilik farklidir muhendislik farklidir.

    kotu bir anlatim oldu ama idare edersin iste.
    _____________________________




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • urldenOgrenciAl kötü bir sınıf ismi olmakla beraber daha çok bir metod u andırıyor.

    OOP olarak düşünecek olursak eğer öğrenciler söz konusu ise önce bir öğrenci nesnesi lazım. Bir nesnenin dışarıya mümkün olduğu kadar az açık bölgesi olmalı. Bütün üyeler (staticler değil) private olmalı. Üye isimlerinin başına m (member) harfi koymak iyi bir alışkanlıktır. Ayrıca mümkünse nesnenin bütün hazırlık işlemi constructor larda halledilmeli.

    class Ogrenci {
    Ogrenci(Ogrenci ogr) {...}
    Ogrenci(String isim, int yas, ...) {...}
    Ogrenci(Url adres) {...}

    private String misim;
    private int myas;
    ...
    // Öğrenci bilgilerini döndüren public metodlar
    }

    Sonra bu öğrencilerin hepsini kontrol edecek bir yönetici lazım, bütün öğrencileri paketleyecek.
    class OgrenciYoneticisi {
    List<Ogrenci> mliste = new ArrayList<Ogrenci>;

    void yeniOgrenciEkle(Ogrenci ogr) {
    mliste.add(ogr);
    }
    Ogrenci ogrenciVer(... anahtar) {
    ...
    return Ogrenci;
    }
    }

    Gördüğün gibi urldenOgrenciAl sınıfı aslında Ogrenci nesnesinde olması gereken bir metod sadece. Bu metodu yöneticiye koysaydık önce öğrencinin bütün bilgilerini elde edip bundan bir Ogrenci nesnesi üretmesi gerekirdi. Bu işlem yöneticinin yetkisi dışında olmalı. Yani her zaman az yetki, az açık, az arayüz, çok soyutlama vs. bunlar oop nin prensipleri.




  • /.53 wenkn,,,,,,,,hrtbs



    < Bu mesaj bu kişi tarafından değiştirildi rob dö şambır -- 30 Nisan 2013; 15:38:43 >
    _____________________________
  • Arkadaşlar çok teşekkür ederim çok açıklayıcı örnekler verdiniz.

    Peki bu classları nasıl tetikliyoruz ve yönlendirme işlemini if kullanmadan nasıl sağlıyoruz. Yani kediyse şu class a git köpekse bu class a git gibi bir ifadeyi if kullanmadan yazmak nasıl mümkün olabiliyor.


    Mesela diyelimki hayvan türlerini bilmiyoruz yani sayısı ve türü değişken olarak geliyor diyelim. dynamic class lar oluşturmamız gereken durumlarda ne yapıyoruz.

    quote:

    Orijinalden alıntı: rob dö şambır

    kendini boşa yorma, encapsulation'dan ötesine kafan hiç basmayacak. kedi köpek kuş örnekleriyle bu iş olmaz. adam gibi bir OO framework'ü açıp incelersen, belki... mesela .Net, bak class'lara nerde static yapmış nerde abstract yapmış nerde niye constructor koymamış vs
    buzzword'leri biriktirip papağanlık yapan muhteşemliği kendinden menkul kişilerin kılavuzluğuyla sadece kafan karışır, sorsan abstract class varken niye interface lazım olmuş veya niye generics icat edildi bilmez (ama Google'da hemen aratıp birkaç laf toplar sonra papağan gibi tekrar eder, o başka)
    eğer ciddiysen Grady Booch, Bertrand Meyer gibi yazarların kitapları var, fakat onların idealize ettiği OO yaklaşımı pratikte tam olarak mümkün olmadı, yine de temelleri felsefeyi öğretir yazdıkları.

    Dostum benim amacım ilk etapta bu işin mantığını çözebilmek neden buna ihtiyaç doğduğunu anlayabilmek. Belli bir noktadan sonra kafam basmazsa eskisi gibi devam ederim yapacak bir şey yok. Araba, okul vs.. benzetmelerle hazırlanmış birbirinin aynı makaleler pek bir işe yaramadığı için konu açmak zorunda kaldım.



    < Bu mesaj bu kişi tarafından değiştirildi samplus -- 28 Ekim 2012; 13:52:24 >
    _____________________________




  • quote:

    Orijinalden alıntı: samplus

    Peki bu classları nasıl tetikliyoruz ve yönlendirme işlemini if kullanmadan nasıl sağlıyoruz. Yani kediyse şu class a git köpekse bu class a git gibi bir ifadeyi if kullanmadan yazmak nasıl mümkün olabiliyor.


    Şuraya git buraya git diye yönlendirmek gerekmiyor işin güzelliği orada zaten. O kedi köpeklerin hepsi hayvan. Somutlaştırmak gerekirse bir nesneye elde edilen bir referans o nesneden türemiş olan bütün nesneleri işaret edebilir. Kalıtım konusunu araştırman lazım. Takıldığın yerleri sorarsın.
  • quote:

    Orijinalden alıntı: elektro_gadget

    quote:

    Orijinalden alıntı: samplus

    Peki bu classları nasıl tetikliyoruz ve yönlendirme işlemini if kullanmadan nasıl sağlıyoruz. Yani kediyse şu class a git köpekse bu class a git gibi bir ifadeyi if kullanmadan yazmak nasıl mümkün olabiliyor.


    Şuraya git buraya git diye yönlendirmek gerekmiyor işin güzelliği orada zaten. O kedi köpeklerin hepsi hayvan. Somutlaştırmak gerekirse bir nesneye elde edilen bir referans o nesneden türemiş olan bütün nesneleri işaret edebilir. Kalıtım konusunu araştırman lazım. Takıldığın yerleri sorarsın.

    http://www.yazilimdilleri.net/YazilimMakale-1862-Inheritance-OOP.aspx

    Bu makale oldukça yeterli sanırım değil mi?
    _____________________________




  • İngilizcen ve C bilgin varsa şu kitaba göz atabilirsin.
    http://www.planetpdf.com/codecuts/pdfs/ooc.pdf
    "ANSI-C" üzerinden OO teknikleri nasıl kullanılır onu anlatıyor. Object oriented bir dil olmayan "C" üzerinden anlattığı için bazı yerler çok daha açıklayıcı olabilir senin için. Ama tabi dediğim gibi yeterli seviyede "C" bilmen gerekli.
    _____________________________
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.