OOP- Property ve Behavior
Nesne Yönelimli Programlama (OOP), nesnelerin veri (özellikler) ve davranışları (metotlar) etrafında döndüğü bir programlama paradigmadır. Java’da özellikler ve davranışlar, sırasıyla alanlar (fields) ve metotlar kullanılarak uygulanır.
Özellikler (Property, Alanlar): Java’da özellikler, bir nesneye ait değişkenlerdir. Bu değişkenler nesnenin durumunu temsil eder. Bunlar, int, double, boolean gibi ilkel türler veya başka sınıfların nesneleri gibi referans türleri de içerebilir. Özellikler, bir sınıfın içinde ancak herhangi bir metotun dışında tanımlanır. Nesnenin özelliklerini tanımlarlar. Örneğin, bir Araba’yı temsil eden bir sınıf düşünelim.
Davranışlar (Behavior, Metotlar): Java’da davranışlar metotlar kullanılarak uygulanır. Metotlar, bir sınıfın nesnelerinin yapabileceği eylemleri tanımlar. Nesnenin özelliklerinin durumunu değiştirebilir ve verilen mantığa dayalı çeşitli görevleri gerçekleştirebilirler. Metotlar parametre alabilir ve değer döndürebilirler.
Örnek: Bir market simülasyonu oluşturalım. Müşterilerin alışveriş yapmasını ve sepetlerindeki ürünleri yönetmelerini sağlayalım.
- Ürünlerin tanımlanması: Elma, armut, çikolata gibi farklı ürünlerin isimleri ve fiyatları belirlenir.
- Müşterilerin oluşturulması: Ahmet ve Ayşe gibi farklı müşterilerin oluşturulması sağlanır.
- Müşterilerin alışveriş yapması: Müşteriler, sepetlerine ürünler ekleyerek alışveriş yaparlar.
- Sepetlerin gösterilmesi: Her müşterinin sepetinde bulunan ürünlerin listelenmesi ve toplam tutarın gösterilmesi sağlanır.
import java.util.ArrayList;
// Ürün sınıfı
class Urun {
private String ad; // Ürünün adını temsil eden özellik.
private double fiyat; // Ürünün fiyatını temsil eden özellik.
// Ürün sınıfının kurucu metodu
public Urun(String ad, double fiyat) {
this.ad = ad;
this.fiyat = fiyat;
}
// Ürün adını döndüren metot
public String getAd() {
return ad;
}
// Ürün fiyatını döndüren metot
public double getFiyat() {
return fiyat;
}
}
// Sepet sınıfı
class Sepet {
private ArrayList<Urun> urunler; // Sepetteki ürünleri tutan ArrayList.
// Sepet sınıfının kurucu metodu
public Sepet() {
this.urunler = new ArrayList<>(); // Boş bir ArrayList oluşturulur.
}
// Sepete ürün ekleyen metot
public void urunEkle(Urun urun) {
urunler.add(urun); // Ürün sepete eklenir.
System.out.println(urun.getAd() + " sepete eklendi."); // Kullanıcıya eklenen ürünün adı bilgisi verilir.
}
// Sepetteki ürünlerin toplam tutarını hesaplayan metot
public double toplamTutar() {
double toplam = 0;
for (Urun urun : urunler) {
toplam += urun.getFiyat(); // Her ürünün fiyatı toplam tutara eklenir.
}
return toplam; // Toplam tutar döndürülür.
}
// Sepetteki ürünleri ve toplam tutarı kullanıcıya gösteren metot
public void sepetiGoster() {
System.out.println("Sepetteki Ürünler:"); // Başlık yazdırılır.
for (Urun urun : urunler) {
System.out.println(urun.getAd() + " - " + urun.getFiyat() + " TL"); // Her ürünün adı ve fiyatı kullanıcıya gösterilir.
}
System.out.println("Toplam Tutar: " + toplamTutar() + " TL"); // Sepetin toplam tutarı kullanıcıya gösterilir.
}
}
// Müşteri sınıfı
class Musteri {
private String ad; // Müşterinin adını temsil eden özellik.
private Sepet sepet; // Müşterinin sepetini temsil eden özellik.
// Müşteri sınıfının kurucu metodu
public Musteri(String ad) {
this.ad = ad;
this.sepet = new Sepet(); // Müşteriye ait yeni bir sepet oluşturulur.
}
// Müşterinin sepetine ürün ekleyen metot
public void sepeteUrunEkle(Urun urun) {
sepet.urunEkle(urun); // Ürün sepete eklenir.
}
// Müşterinin sepetini kullanıcıya gösteren metot
public void sepetiGoster() {
System.out.println(ad + " isimli müşterinin Sepeti:"); // Müşterinin adı kullanıcıya gösterilir.
sepet.sepetiGoster(); // Müşterinin sepeti kullanıcıya gösterilir.
}
}
// Ana sınıf
public class Main {
public static void main(String[] args) {
// Ürünlerin oluşturulması
Urun elma = new Urun("Elma", 2.5);
Urun armut = new Urun("Armut", 3.0);
Urun cikolata = new Urun("Çikolata", 5.0);
// Müşterilerin oluşturulması
Musteri musteri1 = new Musteri("Ahmet");
Musteri musteri2 = new Musteri("Ayşe");
// Alışveriş işlemleri
musteri1.sepeteUrunEkle(elma);
musteri1.sepeteUrunEkle(cikolata);
musteri2.sepeteUrunEkle(armut);
musteri2.sepeteUrunEkle(armut);
// Sepetlerin kullanıcıya gösterilmesi
musteri1.sepetiGoster();
musteri2.sepetiGoster();
}
}
Örneği daha da geliştirelim. Alışveriş uygulamasında basit işlemleri gerçekleştiren bir market simülasyonu oluşturalım. Ürünleri sepete ekleme, toplam fiyatı hesaplama ve sepeti temizleme yapılsın.
import java.util.ArrayList;
// Ürün sınıfı
class Urun {
// Özellikler (alanlar)
private String ad; // Ürünün adını temsil eden özellik.
private double fiyat; // Ürünün fiyatını temsil eden özellik.
// Kurucu method (constructor)
public Urun(String ad, double fiyat) {
this.ad = ad;
this.fiyat = fiyat;
}
// Metodlar
public String getAd() {
return ad;
}
public double getFiyat() {
return fiyat;
}
}
// Alışveriş Sepeti sınıfı
class AlisverisSepeti {
private ArrayList<Urun> urunler; // Alışveriş sepetinde bulunan ürünleri tutan ArrayList.
// Kurucu method (constructor)
public AlisverisSepeti() {
urunler = new ArrayList<>(); // ArrayList'in oluşturulması.
}
// Ürün ekleme metodu
public void urunEkle(Urun urun) {
urunler.add(urun); // Alışveriş sepetine bir ürün ekler.
}
// Toplam fiyatı hesaplama metodu
public double toplamFiyatiHesapla() {
double toplam = 0; // Toplam fiyatı saklayacak değişkenin başlangıç değeri.
for (Urun urun : urunler) { // Alışveriş sepetindeki her bir ürün için döngü.
toplam += urun.getFiyat(); // Ürünün fiyatını toplama ekler.
}
return toplam; // Toplam fiyatı döndürür.
}
// Sepeti temizleme metodu
public void sepetiTemizle() {
urunler.clear(); // Alışveriş sepetini temizler (tüm ürünleri kaldırır).
}
}
// Ana sınıf
public class JavaApplication10 {
public static void main(String[] args) {
// Ürünler oluşturma
Urun urun1 = new Urun("Kalem", 2.5); // Birinci ürün: Kalem, fiyatı: 2.5
Urun urun2 = new Urun("Defter", 5.0); // İkinci ürün: Defter, fiyatı: 5.0
Urun urun3 = new Urun("Silgi", 1.0); // Üçüncü ürün: Silgi, fiyatı: 1.0
// Alışveriş sepeti oluşturma
AlisverisSepeti sepet = new AlisverisSepeti();
// Ürünleri sepete ekleme
sepet.urunEkle(urun1); // Kalem ekle
sepet.urunEkle(urun2); // Defter ekle
sepet.urunEkle(urun3); // Silgi ekle
// Sepetteki toplam fiyatı gösterme
System.out.println("Sepetteki Toplam Fiyat: " + sepet.toplamFiyatiHesapla() + " TL");
// Sepeti temizleme
sepet.sepetiTemizle(); // Sepeti temizle
System.out.println("Sepet Temizlendi.");
// Yeniden toplam fiyatı gösterme (şimdi sepet boş olmalı)
System.out.println("Sepetteki Toplam Fiyat: " + sepet.toplamFiyatiHesapla() + " TL");
}
}