İlginizi Çekebilir
Java'da Polymorphism Nedir
  1. Ana Sayfa
  2. Java
  3. Java Polymorphism Nedir?
Trendlerdeki Yazı

Java Polymorphism Nedir?

Nesne yönelimli programlama kavramının temel yapı taşını oluşturan java çok biçimlilik kavramını sizlere java polymorphism nedir başlığı altında anlatmaya çalışacağım. Aynı zamanda bu içeriğimizin içinde sizleri bekleyen java polymorphism avantajları, örnekleri gibi başlıklar altında konuyu detaylandırarak projelerimiz içerisinde nasıl kullanabileceğimizi anlatmak istiyorum.

Java Polymorphism Nedir?

Java çok biçimlilik kavramı olarak bilinen polymorphism, kavramı nesneye yönelik programlamanın temel taşlarından birisidir. Java’da Kalıtım kavramı ile iç içe bir yapıdadır. Java polymorphism nedir, sorusuna bir nesnenin birbirinden farklı nesneler şeklinde davranmasını sağlamamıza olanak veren yapı olarak cevaplayabiliriz.

Peki bahsetmiş olduğumuz bu java çok biçimlilik kavramını kullanmamız bize ne gibi avantajlar sağlar merak ediyorsanız onları da sizlere bir alt başlıkta paylaşmak isterim.

Java Polymorphism Avantajları Nelerdir?

Java Polymorphism avantajları aslında isminden de anlaşılacağı gibi programlarımızda çok biçimli bir yapı oluşturarak esneklik kurmamıza olanak sağladığı gibi ekstra olarak bazı avantaj sağladığı yerlerde bulunmaktadır.
Bu java çok biçimlilik avantajları şu şekildedir;

  • Programlarımıza sağlamış olduğu esneklik sayesinde farklı işlemler arasındaki bağlantı ilişkilerini azaltarak daha güvenli bir hale getirir.
  • Tekrar tekrar yazılacak kod satırlarını minimum seviyeye indirerek okunabilirlik sağladığı gibi gereken zamanı da azaltır.
  • Program içerisinde oluşan bir hatayı tek bir yapı içerisinde çözme kolaylığı sağlar.

Bunun gibi birçok sağlamış olduğu özellik ve avantaj bulunan polymorphism kavramını daha iyi anlayabilmek için güncel hayattan örnekler ve koda dökeceğimiz bir örnek yapısı ile java polymorphism örnekleri başlığına geçiş yapalım.

Java Polymorphism Örnekleri

Polymorphism kavramını ele aldığımız zaman karşımıza çok biçimlilik, çok şekillilik gibi kavramlar ortaya çıkıyor. Bu kavramları hayatımız içerisinden bazı kavramları ele alarak maddeler halinde örneklendirmek istiyorum. Bu java polymorphism örnekleri şu şekilde olacaktır:

  • Her öğrencinin okuduğu okuldan mezun olma koşuluna sahip olması fakat bir üniversite mezuniyeti için gereken koşullar ile bir lise mezuniyeti arasında farklılık olması.
  • Yazılım dillerini ele alırsak kodun ilk başta bir derlenmesi gerekmektedir fakat bu derleme işlemi java içerisinde ayrı c++ içerisinde farklı olması.
  • Tüm taşıma araçları için sürmek eylemi kullanılmasına rağmen bir otomobil kullanımı ile bisiklet kullanımı arasında farklar olması.

Bu farklara baktığımız zaman temel eylem yapıları aynı olarak görünse bile birden fazla farka ev sahipliği yapabiliyor. Bu ortaya çıkan farklarda bizlere polymorphism kavramını oldukça iyi tanımlıyor diye düşünüyorum.

Peki biz java polymorphism nedir sorusunu cevapladık, güncel hayattan polymorphism örneklerini listeledik ama bir kod içerisinde nasıl kullanacağımızı görmedik bu kodu nasıl oluşturacağız diye sormaya başladığımız zaman iki yol ile giderek java polymorphism kullanımını göreceğiz.

Öncelikle genel olarak akademik ders içerisinde veya java polymorphism nedir olarak araştırdığınız bir konuda verilen standart örnek olan hayvanlar kavramını ele alarak polymorphism kavramını basit bir yapı içerisinde ele alalım.

#1 İlk başta Animal isminde bir sınıf oluşturarak içerisinde private olarak 4 adet değişken tanımlaması gerçekleştirdim ve işlemlerimi çok biçimli bir şekilde kullanmama olanak sağlayacak Constructor metot tanımlayarak kod içerisine esneklik oluşturdum.

public class Animal {
    private String name,sound,info,infoText;
    Animal (){
        this("Bulunmuyor","Bulunmuyor");
    }
    Animal(String name,String sound){
        this.name= name;
        this.sound = sound;
        this.info = null;
        setInfoText(info);
    }
    Animal (String name,String sound,String info){
        this.name=name;
        this.sound=sound;
        this.info = info;
        setInfoText(info);
    }

    public String getName() {
        return name;
    }
    public String getSound() {
        return sound;
    }

    public String getInfoText() {
        return infoText;
    }
    public void setInfoText(String info) {
        this.infoText = "-> Benim İsmim: "+getName()+"\n-> Çıkardığım Ses: "+getSound()+"\n-> Türüm: "+info;
    }

    public String animalInfo(){
        return "< Hayvan Bilgileri >\n-------------------\n"+getInfoText();
    }
}

#2 Animal sınıfımı oluşturduktan sonra kalıtım kullanarak Dog sınıfımı oluşturdum ve constructor ve animalInfo metotlarını override yaparak üstlerine yazma işlemi gerçekleştirdim.

public class Dog extends Animal{
    Dog(String name){
        super(name,"Hav Hav");
        super.setInfoText("Köpek");
    }
    Dog(String name,String info){
        super(name,"Hav Hav",info);
    }
    @Override
    public String animalInfo() {
        return super.animalInfo()+"\n-------------------";
    }
}

#3 Son olarak Cat sınıfımı oluşturarak yukarıdaki madde üzerinde uygulamış olduğum aşamaları uyguladım.

public class Cat extends Animal{
    Cat (String name){
        super(name,"Miyav");
        super.setInfoText("Kedi");
    }
    Cat (String name,String info){
        super(name,"Miyav",info);
    }
    @Override
    public String animalInfo() {
        return super.animalInfo()+"\n-------------------";
    }
}

#4 Kalıtım ve polymorphism işlemlerim bittikten sonra Main sınıfıma girerek gerekli tanımlamaları yaparak yazmış olduğumuz kod satırlarının ekran çıktılarını aldım.

public class Main {
    public static void main(String[] args) {
        Animal dog = new Dog("Karabaş","Kangal"); // Karabaş isminde kangal türüne ait bir köpek üretildi.
        Animal cat = new Cat("Tekir"); // Tekir isminde bir kedi üretildi.
        System.out.println("-------------------\n"+dog.animalInfo());
        System.out.println(cat.animalInfo());
    }
}

Kod Çıktısı:

Java Polymorphism Nedir
Java polymorphism hayvan örneği

Polymorphism nedir sorusu ile bütünleşmiş bir örnek olarak verilen hayvan sesleri kavramını biraz daha geliştirerek bu şekilde bir hale getirdim. Tabi bu vermiş olduğum örnek sadece temel işleyiş mantığını kavramanız içindi, şimdi vereceğim örnek üzerinde projelerinizde nasıl ve hangi amaçlar ile kullanacağınızı biraz daha işlevsel gösterecek bir yapı içerisinde olacak. Bu örnek sayesinde Java polymorphism nedir sorusunu anlayarak kullanım tarzını aklımızda daha detaylı canlandırabileceğiz.

Bu vereceğim örnek içerisinde bir çalışan bilgilerini tutacağımız, çeşitli verilerin girişini sağlayacağımız bir ana sınıf ve o ana sınıftan türetilmiş alt sınıfların ilişkilerini kuracağımız basit bir çalışan kayıt sistemi oluşacak.

#1 Öncelikle her çalışanın ortak özelliklerini tutacağımız Employe sınıfını oluşturarak içerisine bazı değişkenler ve constructor metotlar tanımlıyorum.

public class Employe {
    //Değişken Tanımlanması:
    private String ayrac ="-------------------";
    private String name,surname,job;
    private int salary,annualPermit;
    // Bir çalışan oluşturmak için birden fazla yöntemimiz olabilir onları constructor metotlar ile tanımlayalım.
    Employe(){
        this(null,null);
    }
    Employe(String name,String surname){
        this.name=name;
        this.surname = surname;
        this.job="Çalışan";
        this.salary=2500;
        this.annualPermit=14;
    }
    Employe(String name, String surname,int salary){
        this.name=name;
        this.surname=surname;
        this.salary=salary;
        this.annualPermit=14;
        if(salary>3000){
            this.job="Kıdemli Çalışan";
            annualPermit+=3; // Kıdemli çalışan 3 gün daha fazla yıllık izine sahip olur.
        }
        else if(salary>0 && salary <3000){
            this.job="Çalışan";
        }
        else {
            this.job="Stajyer";
            annualPermit=0; // Stajyer'in yıllık izni olmaz.
        }
    }
    // Total bir fiyat belirterek maaşına zam yapmak.
    public int makeRaise(int howMuch){
        salary += howMuch;
        return salary;
    }
    // Mevcut maaşına % oranında bir zam gerçekleştirmek.
    public int makeRaise (double howMuch){
        double money = (double) salary*howMuch;
        makeRaise((int)money);
        return  salary;
    }
    // Alt sınıflarda verileri güncellemek isteyebiliriz:
    public void setJob(String job) {
        this.job = job;
    }

    public void setSalary(int salary) {
        this.salary = salary;
    }

    public void setAnnualPermit(int annualPermit) {
        this.annualPermit = annualPermit;
    }
    // Verileri Yazdırmak İçin:

    public String getJob() {
        return job;
    }

    public int getSalary() {
        return salary;
    }

    public int getAnnualPermit() {
        return annualPermit;
    }

    // Çalışan Bilgilerini Yazdırma İşlemi:
    public void infoBox(){
        System.out.println("< "+getJob()+" Bilgileri>\n"+ayrac+"\n-> Çalışan İsmi: "+name+"\n-> Çalışan Soyismi: "+surname+
                "\n-> Görevi: "+getJob()+"\n-> Maaşı: "+getSalary()+" TL\n-> İzin Günü: "+getAnnualPermit()+" İş Günü\n"+ayrac);
    }
    public void raiseInfo(){
        System.out.println("< "+getJob()+" Zam Uygulaması >\n-> Yeni Verilecek Maaş: "+getSalary()+"TL \n"+ayrac);
    }

}

#2 Employe üst sınıfını kullanarak firma içerisinde mühendis kayıt etmek için Engineer sınıfı oluşturarak kayıt işlemi için gerekli işlemlerin tanımını gerçekleştiriyorum.

public class Engineer extends  Employe{
    // Birden fazla mühendis oluşturma yöntemimiz olabilir.
    Engineer(){
        super();
        setSalary(5000); // Bir Mühendisin maaşını minimum 7000 TL Olarak Tanımlayalım.
    }
    Engineer(String name,String surname){
        super(name,surname);
        setJob("Mühendis");
        setAnnualPermit(20);
        setSalary(5000);
    }
    Engineer(String name,String surname,int salary){
        super(name,surname);
        setSalary(salary);
        if(salary>7000){
            setJob("Kıdemli Mühendis");
            setAnnualPermit(25);
        }
        else if(salary>10000){
            setJob("Uzman Mühendis");
            setAnnualPermit(35);
        }
        else if(salary>=0){
            setJob("Stajyer Mühendis");
            setAnnualPermit(0);
        }
    }

    @Override
    public int makeRaise(double howMuch) {
        double money = (double) (getSalary()*howMuch)+250; // Mühendislere her yüzdesel zam uygulanmasında +250 TL'de ekstra zam uygulanmasını istiyoruz.
        makeRaise((int)money);
        return getSalary();
    }
}

#3 Üst sınıf ve alt sınıf tanımlama işlemimi gerçekleştirdikten sonra çalışanlarımı oluşturmak için Main sınıfıma gelerek tanımlamalarını gerçekleştiriyorum ve çalışan hakkında bilgi vermesi için eklediğim infoBox metodunu çağırarak ekran çıktılarına bakıyorum.

public class PolymorphismMain {
    public static void main(String[] args) {
        // Çalışan Eklemeleri Yapalım:
        Employe mert = new Employe("Mert","Çağlayan");
        Employe oguz = new Employe("Oğuz","Kaynarca",3500);
        Employe omer = new Engineer("Ömer Faruk","Yıldız",1500);
        Employe oktay = new Engineer("Oktay","Güden",12000);
        // Ekrana Yazdırma İşlemi Uygulaylaım:
        System.out.println("-------------------");
        mert.infoBox();
        oguz.infoBox();
        omer.infoBox();
        oktay.infoBox();
    }
}

Kod Çıktısı:

Java Polymorphism Örnekleri
Java polymorphism çalışan örneği

Peki bu Java polymorphism örneği içerisinde Mert isimli çalışanımıza aldığı maaşın üzerine 350 TL zam, Oktay isimli mühendise ise almış olduğu maaşın üzerine %40 oranında bir zam uygulayarak kod içerisinde yazmış olduğumuz metotlarında çalıştığını test etmiş olalım.

Kod Çıktısı:

Java Polymorphism Çalışan Örnekleri
Java polymorphism çalışan maaşına zam uygulaması

Hazırlamış olduğumuz bu şablonu ilerleyen zamanlarda uygulayacağımız projelerin içerisinde çok biçimli bir yapı inşa etmek istediğimiz zaman daha detaylı ve kapsamlı bir şekilde kullanacağız. Bu yüzden java polymorphism nedir sorusu hakkında aklınıza takılan soruları veya konu işleyişi hakkında bir öneride bulunmak istiyorsanız aşağıda bulunan yorum yap kısmından benimle iletişime geçebilirsiniz.

Yorum Yap

Yazar Hakkında

Yazmayı, öğrenmeyi, öğrendiklerini paylaşmayı , kodlamayı ve günün birinde Yönetim Bilişim Sistemleri Uzmanı olmanın hayalini kuran birisiyim.

Yorum Yap

Yorumlar (1)

  1. Karabaş’ın türü zaar olmalıydı.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir