Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

OOP Class Tutorial


Öne çıkan mesajlar

Mesaj tarihi:
Bu yazı nedir, kimler okumalı?
İlk kısımda OOB nedir ne değildir bunu anlatmaya çalışacağım. Bunun C tarzındaki bir dilden farkı nedir bunları göstereceğim. Daha sonra OOB de nasıl kodlama yapılır neler önemlidir bunlara değinmek istiyorum. C veya php tarzında bir şey ile uğraşmış iseniz ve OOB programlama ile ilgilenmek istiyorsanız bu amatör satırlar kimi şeyleri kavramanızda size yardımcı olacaktır.
Programlamayı hiç bilmiyorsanız bu yazı sizin işinize yaramaz. for,while loopları nedir bilmiyorsanız, değişken (variable) diye bir şey duymadıysanız, control structures (if, else vs vs) kullanmadıysanız okumayın. Kaşıntı yapar.
Bu yazı RunUO için hazırlanmak isteyen kişilere OOB açısından faydalı olabilir.
Kimileri size c# bilmiyorsanız RunUO ile uğraşmayın der. Bu yalandır. OOB biliyorsanız ve RunUO'da adam katanasıyla bana vurduğunda Mysql'e kayıt girsin gibi uçuk bir şey yazmayacaksanız C# bilmenize gerek yoktur. Bilmeniz gereken şey OOB mantığında programlamadır.


-- . --

I. GİRİŞ BÖLÜMÜ
Kim olduğu merak ettiğim kişiler Object Oriented Programming 'i Türkçe'mize Nesne Eğilimli/Yönelimli Programlama olarak çevirmiştir. Bu demektirki yaptığınız herşeyi bir nesne (object) olarak düşünüp object o nesne üzerinden işinizi götürürsünüz.

Bodoslama bir örnek kimi zaman herşeyi daha iyi anlatır. Aklınıza yatmayan şeyleri daha sonra anlatacağım. Örnekler eksiktir. Aklıbaşında bir kişi bu şekilde yazmaz. Zaten yazmadığı için sadece örnek olarak kalır bunlar.




I.I OOB ile ilgili örnek:
Örneğin amacı: Önce OOB olmadan sonra OOB olan bir sistem de programlama mantığının gösterilmesi.
Diğelim ki evlendiniz çocuklarınız oldu ve çocuklarınızın bilgilerini tutan bir program yazmak istiyorsunuz.

Program neler yapsın?
- Çocuğun yaşını, adını ve pipisinin uzunluğunu tutsun.
- Çocuğun günlüğünü aylığa çevirsin. (malum sizin için önemli olan aylık)


OOB olmayan sistem
İki çocuğumuz var ve tek tek bunların özelliklerini alıp sonra kullanacağız diğelim. C tarzı de olsa bu önce cx_ (x=number of child) prefix i ile cocuklar için gerekli değişkenleri alıp sonra da fonksiyonları yazardık.

// ## start of: tüm cocukarın özellikleri

string c1_name, c2_name;
int c1_harclik, c2_harclik;
int c1_pip, c2_pip;
// ## end of: tüm çocukların özellikleri


function int harclik2aylik (int i)
{
return i*30; // diğelim ki her ay 30 çekiyor.
}


.
.
. // gerekli fonksiyonlar böyle tek tek tanımlanır.
.
.


bunları yazar daha sonra main fonksiyonunda tek tek bu bilgileri doldurur ve istendiğinde gerekli fonksiyonları çağırırsınız.


OOB olan bir sistem
Dediğim gibi OOB'de mantık herşeyi parça parça alıp istenildiğinde gereken parçayı vermek değil. (parça parça dan kasıt yukarıda tanımlanmış olan 1. çocuğun adı için c1_name, 2. çocuğun yaşı için c2_age gibi tek tek değişken tanımlamak.)
OOB'de Mantık herşeyi tek bir OBJE'de toplamak, istenilenleri bu obje üzerinden çağarmaktır..

Yukarıdaki örnek için önce ÇOCUK OBJESi yaratırız. İstenen her türlü özelliği bu objeye yükleriz. Daha sonra canımız kaç cocuk yapmak istiyorsa bu OBJE'den türetiriz. (instance)

[i]
public class cocuk // şimdilik public nedir boşverin.
{

// ## start of cocuk özellikleri. Bir çocukta olması gereken
// tüm değişkenleri bir defada burada tanımlayın.
private int harclik,pipi,age; // privata anlatılacak.
private string name;
// ## end of çocuk özellikleri.

// ## start of Cocuk Methods (fonksiyonlar)
public cocuk () // constuctor olur kendisi nedir bosverin. anlatıcam.
{
}

public int getPerMonth() // cocuğun aylığını verecek.
{
return harclik*30;
}

public void setHarclik(int h)
{
harclik= h;
}

public string getName() // adini vericek.
{
return name;
}

public void setName(string s) // adini alıcak.
{
name=s;
}

.
.
. // buraya önce özellikleri sonra bu özellikleri vericek alıcak
. // fonksiyonları tanımlayacaksınız.
.
// ### end of cocuk functions

// ### işte beklenene an main fonksiyonu

/*Java da main böyle başlar C# da Main büyük harf ile başlar. C++ da küçük harf, VB de başlamasın VB Sux */
public static void main(String args[]) // static,void,args vs vs bunları anlatıcam. void i anlatmayacağım void bir şey döndürmüyor demek.
{

// öncelikle bir adet çocuk yaratalım.
// ilk çocuğumuzun adı Ali ikincisi ise Veli olsun.
// nasil bir integet yaratmak için normal de `int i` yazıyorsak
// şimdi bir çocuk yaratmak için de `cocuk Ali,Veli` yazacağız.

cocuk Ali,Veli; // cocuk class'ına ait iki tane OBJE yarattık.
Ali = new cocuk();
Veli = new cocuk(); // new ile constructor açıklanacak.

// gelelim Ali'ye Veli'ye özellik vermeye.

Ali.setName('Ali'); // sen Ali'sin.
Veli.setName('
Mesaj tarihi:
public private gibi access modifier'ları anlatmayı unutmuşum bunları da yarın anlatırım. Daha sonra Baggio'dan bunları yazımın sonuna eklemesini isterim ;)

kısaca söylemek gerekirse

inheritance dan bahsettik.

diğelim ki x : y ( x, y den türetilmiştir.)
eğer y'nin bir değişkeni private ise bu X e geçmez.
eğer y'nin bir değişkeni public ise bu X'e geçer.

bu iğrenç anlatım için üzgünüm. Dediğim gibi yarın daha ayrıntılı bir şekilde anlatırım.[signature][hline]Silencer
Mesaj tarihi:
Silencer bu bilgini paylaştığın için teşekkürler bana çok yararı olucağına eminim .
umarım diğer arkadaşlarada yararı dokunur[signature][hline]Lütfen Yerler Çöp Atmayın!
İmza:Kat Temizlikçisi
è lo zgrw che è il padrone dei mages(In Italiano)
[Bu imza zgrw tarafından 14 January 2003 02:17 tarihinde değiştirilmiştir]
Mesaj tarihi:
Bu sırada niye OOP yerine OOB yazdığımı şimdi fark ediyorum.
OOB Out of Band ile Win95'e nuke atmak için kullanacağınız exception'dır.

o zamanlar hiç bir şey bilmeden bir kişinin sadece ip adresini alarak bilgisayarının kitlenmesine sebep olunabiliniyordu. Resmen bilinç altıma yerleşmiş.

Çok mu nuke yedim nedir? peh...[signature][hline]Silencer

[Bu mesaj nbl_silencer tarafından 14 February 2004 03:56 tarihinde değiştirilmiştir]
Mesaj tarihi:
bende mircde paticiğe yazı yazıyorum diyordu ne yazıyor diyordum:)
hiç anlamam ama güzel birşey yazmışın gibi
:)[signature][hline]-houston gemi kontolden cikti. ne yapmam gerekiyor simdi. -orda ana panelde kirmizi bir dugme var goruyor musun? -evet goruyorum. -o dugme sana girsin. ahahah
Bir topic açılıyor
Topic: Wastiee şöle şöle yenilik isteriz!
Wastiee: Not enough gas... Harvest more gas...

Mesaj tarihi:
çok güzel bir yazı. ben de tam C# guide yazmak için elleri sıvamak üzereydim.

gerçi yayınladığımız yazı dizisi biraz komik olacak. önce RunUO Guide 1, 2. sonra OOB (!) :))), en son da C# Guide gelecek galiba :))

if( ali.pipi != veli.pipi ) {
Console.WriteLine( "önemli olan boyu değil işlevi" )
}

Ek: Topic "C#/C++/Java için OOP" olarak değiştirilmeli sanırım.[signature][hline]its supersonic

[Bu mesaj MumChamber tarafından 14 February 2004 11:28 tarihinde değiştirilmiştir]
Mesaj tarihi:
said:
TheCoder, 14 February 2004 15:15 tarihinde demiş ki:
silincerda büyük değişiklik var sebebini ben de merak ediyorum eskiden silincer değil yazı yazmak post atmazdı ne oldu acep :)

sosyalle$meye ba$ladi galiba. lol.[signature][hline]- never too old to learn!
Quaxis | Dmx
Mesaj tarihi:
Yazılan yazılan bu forumun renkli yazılara ve her forumun olduğu gibi TAB tuşuna izin vermemesi sebebi ile pek anlaşılabilir olmamış. Bugün sonuna Access Modifier'ları da ekleyerek Word Documanı olan versiyonunu hazırladım. Eğer yazıyı gerçekten okumak istiyorsanız buradan dokumanı çekmenizi öneririm.

Tutorial ile ilgili yoruma gelince, tutorial ne demek bunu düşünürseniz burada yazılan şeylerin tam anlamıyla bir tutorial olduğunu fark edersiniz. Biz buna Complete Reference for C# dersek buna eleştiri getirebilirsiniz.


[signature][hline]Silencer

[Bu mesaj nbl_silencer tarafından 14 February 2004 16:42 tarihinde değiştirilmiştir]
Mesaj tarihi:
abi ben buna tutorial değil demedimki.

bir bilgisayar mühendisi olarak koskoca programlama dillerine tutorial yazıyosunuz komik oluyo dedim.

Genk laboratuarları quantum fiziği üzerine tutorial yayınlasa ben gülerim.örneğim abartılı kabul ama unutmayalımki bilgisayar yazılımıda bir bilim dalı.[signature][hline]Mazhar Alanson-Cem Yılmaz:
Bir zamanlar fırtınalar estirirdim
Galiba tekrar estireceğim.
Mesaj tarihi:
- Programlama bir bilim dalı değildir. Bunu istediğiniz yerde istediğiniz kadar tartışabiliriz. Bilimdalı olan elektroniktir. Ben de Elektronik Müh.siyim. İnsanlığın kendi kendine yarattığı bir şeyin diğer insanlara anlatılması bilim olmaz. Hiç bir zaman bu senenin Nobel Programlama ödülü X profesor'e gitmiştir veya X Doçent tezini C# da vermiştir gibi bir yazı göremezsiniz.

- Yabancı forumlarda yazılmış tutorialların seviyesine oldukça yakın olduğunu söyleyebilirim.

- İsmini Baggio değiştirmiş. Bu thread'in konusu OOP de programlama mantığıdır.[signature][hline]Silencer
Mesaj tarihi:
demekki sen hayaında computer scinece diye bişi duymadın.bilgisayar bilimleri denilen şeyin temeli bilgisayar yazılımıdır.bilmeden sallamayalım.matematik dalındada nobel ödülü verilmiyor.oda bilim değil o zaman.saçma ve bilmeden konuşuyosun.master veya dr tezini yazılım üzerine veren var.hemde çok.önemi algoritma tasarımı.

mesleğimi bana öğretmeye çalışma bari.[signature][hline]Mazhar Alanson-Cem Yılmaz:
Bir zamanlar fırtınalar estirirdim
Galiba tekrar estireceğim.
Mesaj tarihi:
işte karıştırdığın şey COMPUTER science. SCIENCE OF PROGRAMMING LANGUAGE değil.

Bir doçent X bir konuyu araştırır. Bunun çözümü için de Y dilinde bir program yazar. Tezini Y dilindeki kodu da ekleyerek verir. Ama tezi programın kendisi değil, programın yaptığı işin kendisidir.

Ayrıca Programlama dili ile Algorithma iki farklı kavramdır. Programlama Dilleri (ki yazının başlığındaki ve senin karşı çıktığın şey) bir bilim dalı olmaz. Birisi gelip ben C# araştırıyorum, yakında C# da yeni buluşlar yapacağım diyemez. Kelimelerin anlamlarını tam olarak düşündüğünde vardığın yanılgıyı fark edeceksin.

Bu başlığın adı X,Y,Z, tutorial. Ve bu X,Y,Z ten hiç birisi bir bilimdalı olamaz. Umarım anlatabiliyorum.

Bu dokumanın da konusu X dilinde en hızlı search binary search mudur, yoksa daha iyisi yapılabilir mi? değildir. Burada anlatılan şey Algorithma DEĞİLDİR. Temel Class mantığı ve OOP.

Biz burada nasıl yeni bir programlama dili yaratılır, en iyi encoding nedir bunu anlatmıyoruz. Bunun araştırması yok. Alırsınız bir Complete Ref. orada herşeyi yazıyor. Biz de bunun Türkçe'sini basit bir dilde veriyoruz. [signature][hline]Silencer

[Bu mesaj nbl_silencer tarafından 14 February 2004 17:24 tarihinde değiştirilmiştir]
Mesaj tarihi:
said:
Dmx, 14 February 2004 16:00 tarihinde demiş ki:
mum sen gerizekalimisin? ne her bi $eye atliyorsun ya! sanane! sana mi soledim? allah allah.


sorunlu musun?
niye herkes asabileşiyor bu aralar. okumayı mı bilmiyorsunuz cidden gerizekalı mısınız kardeşim?[signature][hline]its supersonic
Mesaj tarihi:
computer science disiplininin ne olduğunu biraz araştır öyle konuşalım lütfen.elektronik mühendisisin ,ayıp.
ben programlama dilleri ayrı bi bilimdir demedim.dikkat edersen başından beri bastırarak "bilgisayar yazılımı bilimdir" diyorum.ha ama bilgisayar yazılımıda,proglamlama dilleriyle bi bütündür, ayrılamaz.ha bide implementasyonda öyle fason bi işlem değildir belirtmem lazım.

ayrıca kullanılan implemantasyon üzerine tutorial yazmış olman bunun mantıklı bi iş olduğu anlamına gelmez.yani senin dilinden konuşmaya çalışayım, sen çıkıp fourier transform üzerine bi tutorial yazsan ne kadar başarılı olur?' u anlatmaya çalışıyorum.anlamamak için direniyosun.

bunun üzerinde tutorial yazılmazda demiyorum.uygun bi biçimde yazılır ama mantıksız olur.yani ben sana demedimki "sen yeni şeyler üzerine tartışıyosun,tartışma.". ama sen benim iddia etmediğim şeyleri çevirip çevirip farklı yerlerden anlyosun ve ona göre açıklama yapıyosun.özelliklemi yapıyosun yoksa cidden yanlışmı anlıyosun yoksa benmi anlatamıyorum anlamadım.şimdilik sana karşı bütün iyi niyetimi koruyorum.[signature][hline]Mazhar Alanson-Cem Yılmaz:
Bir zamanlar fırtınalar estirirdim
Galiba tekrar estireceğim.


[Bu mesaj Ra_d tarafından 15 February 2004 01:04 tarihinde değiştirilmiştir]
Mesaj tarihi:
Bu yazının konusu ne ? C#, C++,Java Tutorial.
Sen şimdi bu konunun üzerine
said:
Ra_d, 14 February 2004 16:19 tarihinde demiş ki:
abi koskoca programlama dillerine tutorial yazıyosunuz.kişisel fikrim yapmayın bence.

said:
Ra_d, 14 February 2004 16:55 tarihinde demiş ki:
unutmayalımki bilgisayar yazılımıda bir bilim dalı.

dersen ben de bir yazılım dili tek başına bir bilim dalı değildir derim.

Bizim konumuz nedir? Tekrarlıyorum C#,C++,Java. Yazdığımız şeyin konusu bu. Sen eğer tepki gösteriyorsan ve tepkini bu konuda gösteriyorsan benim bu konuda böyle düşündüğünü düşünmem kadar normal bir şey yoktur.

Tutorial zaten kapsamı DAR bilgi demektir. Basic bilgileri gösterirler. Benim yazımda da basic olarak CLASS mantığı ve INHERITANCE anlatılmıştır. Buna bir itirazınızın olmasının sebebi nedir anlamıyorum.[signature][hline]Silencer

[Bu mesaj nbl_silencer tarafından 15 February 2004 01:22 tarihinde değiştirilmiştir]
Mesaj tarihi:
said:
MumChamber, 14 February 2004 17:22 tarihinde demiş ki:
said:
Dmx, 14 February 2004 16:00 tarihinde demiş ki:
mum sen gerizekalimisin? ne her bi $eye atliyorsun ya! sanane! sana mi soledim? allah allah.


sorunlu musun?
niye herkes asabileşiyor bu aralar. okumayı mı bilmiyorsunuz cidden gerizekalı mısınız kardeşim?

sacma sapan cevaplar verirsen asabile$irim tabi.[signature][hline]- never too old to learn!
Quaxis | Dmx
×
×
  • Yeni Oluştur...