Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace OOP_inheritance
{
public partial class Form1 : Form
{
public Form1()
{
//Form üzerine sürükle bırak ile eklenen komponentlerin ilk değerlerini güncelleme
InitializeComponent();
}
private **** Form1_Load(object sender, EventArgs e)
{
//program penceresi açılırken radio butonlarından biri seçili olsun
rdbEgitmen.Checked = true;
}
private **** btnImzala_Click(object sender, EventArgs e)
{
//Calisanlar sınıfından bir nesne oluşturalım
Calisanlar calisan;
//Radio butonlarından hangisi seçili ise o değere göre calisan nesnesinin bir
//örneğini oluşturalım
if (rdbEgitmen.Checked)
{
calisan = new Egitmenler();
}
else
{
calisan = new Muhasebeciler();
}
//calisan nesnesini özelliklerini formda girilen değelere göre güncelleyelim
calisan.Ad = txtAd.Text;
calisan.Soyad = txySoyad.Text;
calisan.Maas = nudMaas.Value;
//calisan nesnesini formdaki listbox listesine ekleyelim.
lstCalisanlar.Items.Add(calisan);
//ekleme işleminden sonra tüm textbox ları temizleyelim
TextleriTemizle();
}
private **** TextleriTemizle()
{
foreach (Control item in groupBox1.Controls)
{
if (item is TextBox)
{
(item as TextBox).Clear();
}
}
}
private **** lstCalisanlar_DoubleClick(object sender, EventArgs e)
{
//formdaki listbox üzerindeki herhangi bir satır çif tıklandığında bu metot
//çalışacak ve seçilen sıradaki calisan ile ilgili bilgileri messagebox ile gösterelim
//Eğer listboxdan seçil eleman indeksi -1 olarak dönerse hiç bir işlem
//yapmadan metodu sonlandır.
if (lstCalisanlar.SelectedIndex < 0)
{
return;
}
string seciliElemanTipi;
Calisanlar calisan = lstCalisanlar.SelectedItem as Calisanlar;
if (calisan == null)
{
MessageBox.Show("Herhangi bir çalışan seçmemişsiniz...");
}
else
{
seciliElemanTipi = calisan.GetType().Name;
decimal maas = calisan.Maas;
decimal maasArtis = calisan.Artis;
string mesaj = string.Format("{0} tipinden bir eleman seçmişsiniz." +
" Maaşı {1} TL ve yıllık artış oranı {2} dir ", seciliElemanTipi, maas, maasArtis);
MessageBox.Show(mesaj);
}
}
private **** contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
Calisanlar calisan = lstCalisanlar.SelectedItem as Calisanlar;
if (calisan == null)
{
e.Cancel = true;
}
if (calisan is Egitmenler)
{
contextMenuStrip1.Items[1].Enabled = false;
}
else
{
contextMenuStrip1.Items[1].Enabled = true;
}
if (calisan is Muhasebeciler)
{
contextMenuStrip1.Items[0].Enabled = false;
}
else
{
contextMenuStrip1.Items[0].Enabled = true;
}
}
private **** neAnlatacaksınToolStripMenuItem_Click(object sender, EventArgs e)
{
Egitmenler calisan = lstCalisanlar.SelectedItem as Egitmenler;
MessageBox.Show(calisan.BugunHangiKonuyuAnlatcaksin());
}
private **** paraSayımHızıToolStripMenuItem_Click(object sender, EventArgs e)
{
Muhasebeciler calisan = lstCalisanlar.SelectedItem as Muhasebeciler;
MessageBox.Show(calisan.SaniyedeKacKagitSayabilirsin.ToString());
}
private **** lstCalisanlar_MouseClick(object sender, MouseEventArgs e)
{
//Listbox üzeirnde seçili olan elemanın üzerine sağ tıklandığında context menü
//açalım ve yaptığın işin özelliklerini messagebox ile gösterelim.
if (e.Button == MouseButtons.Right)
{
contextMenuStrip1.Show();
}
}
}
}
////////////////////////////////////////////////////////////////////////////
//Calisanlar sınıfı
////////////////////////////////////////////////////////////////////////////
class Calisanlar
{
public string Ad
{
get;
set;
}
public string Soyad
{
get;
set;
}
public decimal Maas
{
get;
set;
}
protected decimal artis;
public decimal Artis
{
get { return artis; }
//set { artis = value; }
}
public override string ToString()
{
return this.Ad + " " + this.Soyad;
}
}
////////////////////////////////////////////////////////////////////////////
//Egitmenler sınıfı
////////////////////////////////////////////////////////////////////////////
class Egitmenler : Calisanlar
{
public Egitmenler()
{
this.artis = 0.1M;
}
//Egitmeler sınıfına public olarak bir metot ekleyelim
public string BugunHangiKonuyuAnlatcaksin()
{
return "OOP anlatmayi planliyorum!!!";
}
}
////////////////////////////////////////////////////////////////////////////
//Muhasebeciler sınıfı
////////////////////////////////////////////////////////////////////////////
class Muhasebeciler : Calisanlar
{
public Muhasebeciler()
{
this.artis = 0.05M;
saniyedeKaçKagit = new Random().Next(2, 10);
}
// Mehasebeciler sınfına bir alan (field) ekleyelim
int saniyedeKaçKagit;
//Muhasebeciler sınıfına public bir özellik ekleyelim.
public int SaniyedeKacKagitSayabilirsin
{
get { return saniyedeKaçKagit; }
}
}