Nesne Tabanlıda nasıl gelişebilirim

Kodla Büyü

ersan3333

Seçkin Üye
Seçkin Üye
Mesajlar
392
Konuları çalıştım videodaki örnekleride inceledim ancak iş basit projeler yapamaya gelince biraz zorlanıyorum.constructors kapsülleme miras nedir bunları iyi biliyorum ama proje üzerinde uygulamada sıkıntılarım var.
Nasıl gelişebilirim bu konuda
 
Daha çok video izleyip; daha çok örnek yaparak olur ancak.
 
basit projelerde oop'ye ihtiyaç hissedemezsiniz. ihtiyaç hissetmeden de hepsi ezbere bilgi olarak kalır.
ayrıca iki satırda yapacağınız şeyi 10 satıra çıkaracağı gereksiz gelecektir.

tavsiyem modüler ve büyük bir projeye girişmeniz. bunu yapmadan önce de uml ile projeyi önceden modellemeniz.
modelleme esnasında bile göreceksiniz ki birçok noktada bu sıkıntılı kavramlara ihtiyaç duyup kullanmaya başlamışsınız :)
 
örneğin miras konusunda uygulamadan şöyle bir örnek vereyim. şu anda bir uygulamanın yönetim panelini yapmakla uğraşıyorum. yönetim paneline yetkisiz erişimin engellenmesi gerekiyor haliyle. codeigniter framework kullanıyorum ve mvc tabanlı bu fwde her sayfaya ait bir controller classı bulunuyor.

bu durumda yönetim paneline girişte yetkisiz erişimi engellemek için panel içerisindeki her sayfanın constructor'ında oturum açılıp açılmadığının kontrolünü yapmam gerekiyor. bir sayfada unutursam eğer çok büyük bir güvenlik açığı doğuracak. ayrıca aynı kodu her class için kopyala yapıştır yapmak zorunda kalacağım.

peki daha efektif şekilde bu güvenliği nasıl sağlarım? tabi ki kalıtım (miras) ile :idea: bir adet parent class yazarım. bu class'ın constructor'ında oturum kontrolünü yapan kısmı kodlarım. sonrasında ise paneldeki tüm sayfaları bu class'tan miras aldırır ve sorunu çözmüş olurum.

paneldeki tüm sayfalar bu parent classtan fonksiyonlarını miras aldıkları için oturum kontrolünü otomatik olarak gerçekleştirecektir. bu sayede hem aynı kodu her sayfaya yazmak zorunda kalmayacağım hem de güncelleme yapmak istediğimde artık tek bir yerden yapacağım tüm panele uygulanmış olacak.

... yani bu şekilde birşeyleri daha iyi nasıl olur gibi sorgulamanız ve ihtiyaç hissetmeniz gerekiyor.

umarım açıklayıcı olmuştur kolay gelsin :wink:
 
Video izleyip örnek yapmak bir yere kadar. Arkadaşların da dediği gibi proje yapmak lazım. Ama yapmak için yapmak değil de ihtiyacınız olan yada ihtiyacı olan birisi için bir şey yapmak sizi daha da motive eder.
 
Ntier katmanlı mimari olarak web de ve YouTube ta arat hocam. Buradan başla. Sınıf kullanımı giriş seviyesinde en iyi bu yapıda anlaşılır. Bu yöntem en temel yaklaşım. Çok iyi bir başlangıç aşaması olacak ve nyp kavramları daha iyi oturacaktır.

Örnek projeleri github tan bulabilirsiniz.

https://github.com/betulaslan94/Ogrenci-Bilgi-Sistemi
 
Öncelikle yapılmış basit projeleri incelemek ve çözümlemek daha faydalı olacak sanki ama kitaplarda youtubde fazla yok.miras nedir kapsülleme nedir basit örneklerle anlatıp geçmiş hepsi
 
hocam hangi dili kullanıyorsunuz? ben vb net dilini kullanarak visual studio programı ile ufak tefek şeyler yapabiliyorum. açıkçası miras alma hiç kullanmadım. projelerim küçük olduğu için herhalde ihtiyacım olmadı. "public shared class" oluşturup değişkenleri orada tanımlıyorum.
 
rastgele 52 kağıdı dağıttırmayı deneyin...Class la yazınca çok kolay ve sistematik oluyor :+1:
 
youtube da emrah diye bir eleman vardı php ile oop yi anlatıyordu şimdi soyismini hatırlayamadım ondan öğrendim oop mantığını sonra zahid efe diye bir eleman var onun videolarını izledim çok faydası oldu. bir dilde öğrendikten sonra php olsun c# olsun java olsun ufak tefek yazım farklılıkları olmakla birlikte mantığı aynı
 
İnternette bakıyorum otomasyonlarda bile hiç kullanılmamış nesne tabanlı programlama mantığı
 
ersan3333' Alıntı:
İnternette bakıyorum otomasyonlarda bile hiç kullanılmamış nesne tabanlı programlama mantığı
O onların bilmemesindendir. Artık PHP gibi bir dilde bile frameworkler aracılığı ile oop kod yazmaya rağbet var.
 
bool turn = true;
int turn_count = 0;

private void button_click(object sender, EventArgs e)
{
Button b = (Button)sender;
if (turn)
b.Text = "X";
else
b.Text = "O";

turn = !turn;
b.Enabled = false;
}

burdaki bool turn=true; değişkenin amacı ne. turn=!turn ne iş yapar birde
 
Bu parçadan tek başına büyük planı görmek mümkün değil. Ancak olan şu ki turn (sıra) isimli bir değişken var. turn true gelirse (ilk değeri true=>bool turn=true;) hangi butona tıklanmışsa textini X yapıyor, eğer false iken tıklanmışsa 0 yapıyor. Sonrada turn değişkenini tersliyor true ise false, false ise true (turn = !turn;) en son olarak da tıklanan butonu pasifleştiriyor.
 
omd' Alıntı:
Bu parçadan tek başına büyük planı görmek mümkün değil. Ancak olan şu ki turn (sıra) isimli bir değişken var. turn true gelirse (ilk değeri true=>bool turn=true;) hangi butona tıklanmışsa textini X yapıyor, eğer false iken tıklanmışsa 0 yapıyor. Sonrada turn değişkenini tersliyor true ise false, false ise true (turn = !turn;) en son olarak da tıklanan butonu pasifleştiriyor.
sağol hocam.ilk değer olarak true ile başlıyor ve tıklandığında x atıyor ilk önce değilmi
 
Yabancı bi steden yaptım bu tictactoe oyununu ama kodları anlamada sıkıntılarım var açıklayabilecek olan varmı bu kodları arkadaşlar

namespace wf_tictactoe
{
public partial class Form1 : Form
{
bool turn = true;
int turn_count = 0;

public Form1()
{
InitializeComponent();
}

private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Oyun Hazırlanmıştır");
}

private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();

}

private void button_click(object sender, EventArgs e)
{
Button b = (Button)sender;
if (turn)
b.Text = "X";
else
b.Text = "O";

turn = !turn;
b.Enabled = false;
turn_count++;

checkForWinner();
}

private void checkForWinner()
{
bool there_is_a_winner = false;
//HORİZONTAL CHECKS
if((A1.Text==A2.Text)&&(A2.Text==A3.Text)&&(!A1.Enabled))
there_is_a_winner=true;
else if ((B1.Text == B2.Text) && (B2.Text == B3.Text) && (!B1.Enabled))
there_is_a_winner = true;
else if ((C1.Text == C2.Text) && (C2.Text == C3.Text) && (!C1.Enabled))
there_is_a_winner = true;

//VERTİCAL CHECKS
else if ((A1.Text == B1.Text) && (B1.Text == C1.Text) && (!A1.Enabled))
there_is_a_winner = true;
else if ((A2.Text == B2.Text) && (B2.Text == C2.Text) && (!A2.Enabled))
there_is_a_winner = true;
else if ((A3.Text == B3.Text) && (B3.Text == C3.Text) && (!A3.Enabled))
there_is_a_winner = true;

//DİAGONAL CHECKS
else if ((A1.Text == B2.Text) && (B2.Text == C3.Text) && (!A1.Enabled))
there_is_a_winner = true;
else if ((A3.Text == B2.Text) && (B2.Text == C1.Text) && (!C1.Enabled))

there_is_a_winner = true;

if (there_is_a_winner)
{
disableButtons();

string winner = "";
if (turn)
winner = "O";
else
winner = "X";
MessageBox.Show(winner+ " KAZANDI"," Yay");
}
else
{
if (turn_count==9)
MessageBox.Show("BERABERE","Bummer");
}

}

private void disableButtons()
{
try
{
foreach (Control c in Controls)
{
Button b = (Button)c;
b.Enabled = false;
}
}
catch { }
}

private void newGameToolStripMenuItem_Click(object sender, EventArgs e)
{
turn = true;
turn_count = 0;

try
{
foreach (Control c in Controls)
{
Button b = (Button)c;
b.Enabled = true;
b.Text = "";
}
}
catch { }
}


}
}
 
Geri
Üst