Merhaba Github ta kodlarını paylaşmış kişilerin kodlarını incelediğimde adam herşeyi nesneye dayalı şekilde sınıf sınıf tanımlamış ve herşeyi farklı sınıflarda tanımladığı metodlarla ve değişkenleri çağırarak yapıyor.Hatta 3-4 sınıfın metodları birbiriyle bağlantılı.Adam şunu nerde tanımlamış nerden çağırmış takip ederken kaybolacak gibi hissediyorum.Kodu anlayabiliyorum ama anlarken zorlanıyorum bunu yazan adam bu kodu nasıl tasarlamış diye düşünüyorum.

Yaşım 23.Şuana kadar aktif şekilde yazılımcılıkla uğraşmadım iş hayatına atılmadım.Kod yazarken herşeyi bir sınıf içinde yapıyorum.Yeni sınıflar açıp kodu bahsettiğim şekilde düzenli yazmak aklıma gelmiyor.

Kastettiğim gibi düzenli, oop a uygun kod yazmayı nasıl alışkanlık edinebilirim?Projeme başlamadan önce tüm herşeyi bir kağıtta mı tasarlayayım?Neler önerirsiniz?

soruldu: 23 Haz '14, 10:50

juanov's gravatar image

juanov
455465555
cevap kabul oranı: 33%

1

özellikle yazilimcininderman sitesi çok güzelmiş keşke daha önce görseymişim.Teşekkürler İsmail bey

(25 Haz '14, 07:12) juanov juanov's gravatar image

Öncelikle bir analiz olmalı ki ne-nasıl yapılacak kafanda şekillensin. Analiz programcını neyi yapacağını bilmesini sağlar. Eğer ne yapacağını bilirsen nasıl yazacağına karar verirsin.

OOP' ye uygun kod yazmaya çalışırken:

1-Kodlarını gruplamalısın bunu biraz daha açıklayayım. Diyelim ki ürünlerle ilgili işlemler yapıyorsun. Bir tane UrunContext classı aç ve bu metodları onun içinde biriktir. Aynı metod bir daha lazım olursa tekrar yazmana gerek kalmaz. UrunContext' i new'leyip aynı metodun istediğin yerden istediğin kadar kullanırsın

2-Diyelim ki bir metod yazacaksın kendine bu soruyu sor : 'Bu metodu başka projelerdede kullanırmıyım acaba?' Eğer bu sorunun cevabı evet ise Utility classı oluştur kendine ve kodunu onun içine yaz. Yeni bir projeye geçtiğinde bu Utility classında metodlarını çok rahat kullanabilirsin.

3-Sadece nesneye dayalı program yazmak yetmez. Çok katmanlı mimariye de geçmelisin. Bir örnek ile gidelim.MyApp.Lib class librarymiz olsun ve tüm metodlarımız bu class librarynin içinde olsun. MyApp.Web kapmanımız olsun ve MyApp.Lib katmanındaki metodları kullansın ve işlemlerimiz yapsın. Diyelimki bir aynı uygulamaya birde masa üstü uygulama yazmak gerekti ve adı da MyApp.Desktop olsun.Ekranlarını tasarladıktan sonra tek yapmamız gereken MyApp.Lib içindeki hazır metodları kullanmak olacaktır.

Kısacası amacımızı anlamış olmalısın. Aynı kodu tekrar tekrar yazmamak. Eğer kodumuzda hata var ise bir yerden yaptımız düzeltme ile her yerden düzgün hala gelmesi. Ayrıca kodlarımızı grupladığımız için daha düzenli bir yapı oluşur ve neyin nerde olduğunu daha iyi bilir. Oluşan hataların kaynağını daha kolay tespit ederiz. Hatta kod düzenli olduğu için bir başkasıda kodu daha kolay anlayabilir.

permanent link

cevaplandı: 23 Haz '14, 11:57

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.6k103690
cevap kabul oranı: 28%

değiştirildi: 23 Haz '14, 12:03

Güzel açıklama olmuş @Müslüm Öztürk

(23 Haz '14, 12:40) Numan Numan's gravatar image

Nesneye yönelik programlama biraz da hayal gücü, soyutlama ve gercek hayattaki modelleri koda dönüstürme ile ilgili bir durum. Baskasinin kodunu anlayabilmek icin, o programcinin dünyayi nasil gördügü ve kodu nasil soyutladigini bilmek lazim. Bunu cogu zaman bilmedigimiz icin baskasinin kodunu anlamakta zorlaniriz.

Nesneye yönelik programlama yapmak istiyorsan, uygulamanin calisma sahasi hakkinda bilgi sahibi olman gerekiyor. Bu amacla müsteri ile konusarak, ne istedigini anlamak gerekiyor. Konusma esnasinda müsteri calisma sahasi hakkinda bilgi verecektir. Buradan yola cikarak bir alan modeli (domain modeli) olusturmak gerekiyor. Örnegin bir shop sisteminde Musteri, Siparis, Ürün gibi alan nesneleri olur. Bu alan nesneleri arasindaki iliskilier mevcuttur. Örnegin bir müsterinin sifir, bir ya da birden fazla siparisi olabilir. Bu iliskileri kurduktan sonra alan nesneleri üzerinde islem yapan servis siniflari olusturabilirsin. Örnegin MusteriServis sinifi müsteri nesneleri ile ilgili islemleri gerceklestirir. Alan nesneleri entity olarak isimlendirilen ve veri tabaninda tutulan verileri ihtiva eder.

Nesneye yönelik programlama yapabilmek icin uygulamanin calisma sahasi hakkinda analiz yapilmasi bir zorunluluk. Bu olmadan ve uygulamanin ne yapmasi gerektigini anlamadan nesneye yönelik programlama teknikleri kullanilsa bile, müsterinin ihtiyac duydugu ve gereksinimlerini tatmin edecek bir uygulama ortaya cikmaz.

permanent link

cevaplandı: 26 Haz '14, 01:52

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183
cevap kabul oranı: 52%

Head First Object-Oriented Analysis and Design kitabını bir şekilde edinip okumanızı şiddetle tavsiye ediyorum.

permanent link

cevaplandı: 23 Haz '14, 12:51

dreampowder's gravatar image

dreampowder
3.3k112849
cevap kabul oranı: 23%

değiştirildi: 23 Haz '14, 12:52

Çok teşekkürler önerileri dikkate alacağım.Kitabı da boş bir vaktimde okuyacağım

(23 Haz '14, 15:45) juanov juanov's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,077
×13

Soruldu: 23 Haz '14, 10:50

Görüntüleme: 779 kez

Son güncelleme: 26 Haz '14, 01:52

powered by BitNami OSQA