tr-demoscene

the scene => coding => teori => Konuyu başlatan: sorusoran - 01.06.2010 10:31:38

Başlık: javada lamer sorusu
Gönderen: sorusoran - 01.06.2010 10:31:38
selam javayi tamamen ogrenmem lazim.
yalniz interface olayini daha anliyamadim

interface in amaci nedir baba ogul seklinde anlatilari okudum ama aklim almadi nedemek istediklerini

normal class tanitip icindeki degiskenleri kullana biliyoruz. interfacein amaci nedir? ne gibi durumlarda ise yarar.

farkli sekilde sormak gerekirse extends ile imlements arasindaki fark nedir benzerlik nedir

cevap yazmak veya yerine turkce anlatim olan bir e-book linkide verirseniz cok makbule gecer. ikiside olur
Başlık: javada lamer sorusu
Gönderen: Norvax - 01.06.2010 11:02:53
Merhaba,

Interface sadece Java'ya ozel birşey değil. Nesne Tabanlı (Object Oriented) programlama kavramının en önemli temel taşlarından biri. Hangi OO dilini kullanırsan kullan bu kavrama rastlarsın. Kisacasi senin OO öğrenmen lazım. OO ve java konusunu çok iyi anlatan bir kitabı önerebilirim. Yalnız Türkçe çevirisi yok umarım okumakta zorlanmazsın. Bruce Eckel'in  Thinking in Java 3rd edition. Linki de burda: http://www.mindview.net/Books/TIJ/
Başlık: javada lamer sorusu
Gönderen: endo - 01.06.2010 14:29:40
selam,
asagidaki linkten de java'ya hizli bir giris yapabilirsin, genel konulardan hizlica bahseden bir ebook. interface veya oop konusuyla ilgili degil tabii, java anlatiyor sadece ama isine yarayabilir.

http://www.moldibi.com/download/jbook.zip

Bir sure sonra silecem dosyayi, ileride bakanlar icin broken olabilir link. bilginize.

Interface'den cok basitce bahsedecek olursak, belirli class gruplarinin ortak ozelliklerinin tanimi diyebiliriz.
ornegin, tasit interface'in olsun. araba, ucak, bisiklet class'larin bu interface'i destekler (bunun anlami, bu interface'in icindeki tum metodlari/ozellikleri barindirmak "zorundadirlar". ancak her bir class bunlari farkli implemente etmis olabilir, o yonuyle interface icerikten tamamen bagimsizdir.) objelerin de murat124, boing747 vb. olur.
interface'lerin bu nedenle cok iyi tasarlanmasi gerekir. soyle derler "bi interface yazdiysan sonsuza dek onunla yasaman gerekir". cunku ona bagli onlarca class olabilir. tabii sadece kendi yazdigin bi projede cok onemli gorunmeyebilir, ama senin interfacelerini baskalari da projelerinde kullaniyorsa (bi ekip ornegin) o durumda interaface'de bi degisiklik yapman gerekirse yeni bir interface olusturman gerekir.
Bu yuzden ornegin microsoft'un apilerinde Ixxx ve Ixxx2, IxxxEx gibi interfaceler olur. Ixxx2'yi destekleyen classlar Ixxx'i destekler, ama yeni ozellikleri de olabilir.

burada tabii zaten classlari ben yaziyorum neyin ne oldugunu biliyorum interface'e niye ihtiyacim olsun diyebilirsin. bi noktaya kadar bu dogrudur. ancak ornegin senin bir fonksiyonuna parametre olarak bir obje geldiginde o objenin ne menem bisey oldugunu bilmek isteyebilir ve ona gore farkli isler yapmak isteyebilirsin. ornegin, obje tasit interface'sini destekliyorsa "ilerle" metodunu cagir diyebilirsin. ya da parametrenin taniminda "bu arguman tasit interface'ini destekleyecek" diye kisit koyabilirsin.

allah cezami vermesin kisa bisey yazacaktim dalmisim. kusura bakmayin :) ozetle budur.
Başlık: javada lamer sorusu
Gönderen: skate - 01.06.2010 16:14:13
implements ve extends arasındaki farkı sormuşsun, net bir yanıt verilmemiş. extends'i şu şekilde kullanıyoruz.
 
Kod: [Seç]
abstract class Vehicle {
    void Draw() {
        ...
    }
 
    abstract void Accelerate();
    abstract void Break();
    abstract void Rotate();
}
 
class Car extends Vehicle {
    void Accelerate() {
        ...
    }
    void Break() {
        ...
    }
    void Rotate() {
        ...
    }
}
 
class Plane extends Vehicle {
    void Accelerate() {
        ...
    }
    void Break() {
        ...
    }
    void Rotate() {
        ...
    }
}

Vehicle'da "Draw" metodu tüm taşıtlar için ortak olarak belirleniyor ancak Accelerate, Break ve Rotate her taşıtta kendine has tanımlanacak biçimde yalnızca tanımlanıyor. Car ve Plane'de bu metodlar belirleniyor ancak "Draw" metodu da kullanılabiliyor çünkü bu Classlar Vehile'dan extend edilmiş durumda.
 
Interface'e gelince;
 
Kod: [Seç]
interface IVehicle {
    void Accelerate();
    void Break();
    void Rotate();
    Color GetColor();
    void SetColor(Color vehicleColor);
}
 
class Car extends Vehicle implements IVehicle {
    Color color;
 
    void Accelerate() {
        ...
    }
    void Break() {
        ...
    }
    void Rotate() {
        ...
    }
    Color GetColor() {
        return color;
    }
    void SetColor(Color vehicleColor) {
        color = vehicleColor;
    }
}

Burada Car class'ı IVehicle interface'ini desteklemek durumunda olduğu için mecburen GetColor ve SetColor metodlarına sahip olmak zorunda kalıyor. Yani abstact class'da yer almasa bile interface bu metodları şart koşuyor.
 
Olayın genel mantığı bu. Java kullanmadığım bir dil olduğu için Java açısından uygunsuz birşey yazmış olabilirim, Javacı arkadaşlar düzeltsin lütfen.
Başlık: javada lamer sorusu
Gönderen: sorusoran - 01.06.2010 22:03:50
ekip olarak cok iyi cevap veriyorsunuz. bu sayfayi pdf olarak kayit ettim. istedigim e-book edindim. aklima su geldi. neden bu forumdaki coding basligi altindaki sorulari pdf olarak kayit edip yayinlamiyorsunuz. gereksiz bir dusunce gibi ama yazasim geldi.

tesekkurler sizi seviyorum
Başlık: javada lamer sorusu
Gönderen: skate - 01.06.2010 22:35:20
@sorusoran: özel sorulara gelen yanıtları "döküman" niteliğinde yayınlarsak çok az kişi bundan faydalanabilir. bunun için magazineler var zaten. Türkiye'de de Plazma bu amaçla çıkmıştı. çeşitli problemlerden dolayı hayal ettiğimiz düzende ilerlemedi ancak doğru olan yol bu. dökümanlar magazine şeklinde düzenli bir biçimde yayınlanmalı. senin "interface olayini daha anliyamadim" şeklindeki soruna cevap verebilecek şey ise forum tipi sitelerdir. bu forumun haricinde ünlü yabancı örnekleri;
 
http://www.experts-exchange.com
http://stackoverflow.com/
 
gibi sitelerdir. Bu siteler senin soruna yanıt olur.
 
Java ile ilgili sorulabilecek milyonlarca soru olduğunu düşünecek olursak bu forumda yazılanları döküman haline getirmek genel ihtiyacın çok çok çok azını karşılayacağı ve düzgün bir indeks oluşturulmadıkça mevcut kısmına da ulaşılması güç olacağı için döküman işini kitaplar, magazinelere ve benzeri düzenli kaynaklara bırakmamız gerekiyor. forumlar ise soru/cevap şeklinde dökümanlardan anlaşılamayan detaylarla ilgili kullanıldıkça pekiştirici fayda sağlıyorlar.
 
sen Norvax'in dediği gibi OOP ile ilgili kendini geliştir. emin ol bu konuda uzmanlaştıktan sonra Java dil olarak sana "zaten olması gereken bu" dedirtecek. birçok Javacı tüm OOP diller arasında en kuvvetlisinin Java olduğunu savunur ki benim de genel gözlemim haklı oldukları yönünde. bu nedenle sen Java'nın üzerine kurulduğu mimariyi çözdüğüm gibi gerisi çorap söküğü gibi gelecektir. Gel gelelim şahsi kanaatim Java'nın hala çok fazla eksisi olduğu yönünde ama bu başka bir hikaye elbette ki. Sen Java'yı sök, sonra tartışırız. :)
Başlık: javada lamer sorusu
Gönderen: endo - 02.06.2010 10:59:03
@sorusoran: aslinda dedigin gibi seyler yapilmiyor degil.
ornegin GameDev forumlarindaki article ve thread'lerden cok kaliteli bazi help dokumanlari olusturulmustu: "GameDev - DirectX Articles.chm" ve "GameDev Articles - Graphics.chm" gibi windows help dosyalari seklinde.
Ama tabii cok uzun ve zahmetli bir is ve dahasi insanlarin forum icin sadece cevap degil article yazmasi da gerekir.
Yine de yapilmayacak sey degil tabii, ama benim de gonlum bu gibi yazilarin plazma'da yayinlanmasi, hatta gerekirse plazmaya forumdan alinti yapilabilir bence.
Başlık: javada lamer sorusu
Gönderen: sorusoran - 03.06.2010 01:24:06
plazma le ilgilenen arkadaslar kimler?
bende katkida bulunmak istiyorum. blender 3D cizim programi hakinda video ders hazirlamak isityorum bu aralar bos vakitim var. plazmanin cikmasina daha ne kadar var bilmiyorum bos vakitimi degerlendirmek istiyorum. ikinci sorum plazmada video ders olurmu illa yazili dokumasyon olmasi mi gerekli?
Başlık: javada lamer sorusu
Gönderen: skate - 03.06.2010 06:35:08
Plazma'nın editörü Nightlord, onunla konuşman lazım.
 
Video tutorial çok fazla yer kaplayacağı için Plazma açısından uygun değil. Plazma yayınlanırken kod örnekleri, grafikler, müzikler v.b. dökümanlar paketin içine konulabilir. Ancak derginin boyutunun makul seviyede kalması gerekir. 1-20 MB gibi bir aralıktan bahsediyorum. Ayrıca magazineler okumak içindir, izlemek/dinlemek için değil. Örneğin birçok partinin review'ı yapılır magazinelerde ancak partiden video görüntüleri yer almaz, anlatabildim mi? Bir scene magazine, gerçek anlamda magazinedir.
Başlık: javada lamer sorusu
Gönderen: sorusoran - 03.06.2010 07:40:14
@Skate ok anladim ama gece ben dersi hazirladim bile baska bir topic acip burda yayinliyorum o zaman