← Back to list

Abstraction, Polymorphism, Encapsulation, Inheritance

Java..

Eda GÜLER · 2024-01-30 20:25 · 23 claps · 2.0 min read
#java #nesnelerin-interneti
Open on Medium ↗
Wiki topics: TLS · Design Tools & Workflow

Abstraction, Polymorphism, Encapsulation, Inheritance

Java..

Merhaba ben Eda, Sisterlab Java ile Backend Geliştirme Akademisi katılımcısıyım. Bugün size 8. dersimizde öğrenmiş olduğumuz Nesne yönelimli programlamanın temelini oluşturan 4 temel kavramdan bahsedeceğim. Hazırsanız başlayalım;

Kavramlarımız: Abstraction, Polymorphism, Encapsulation, Inheritance

  1. Abstraction(Soyutlama); Java’da soyutlama, gereksiz ayrıntılara girmeden bir nesnenin sadece gerekli özelliklerini belirleme işlevidir. Bir sınıfa veya metoda temel görevlerin girilip detaylandırılmamasıdır. Yüzeysel olarak bir resme baktığımızda sadece anlatılmak isteneni görürüz. Ayrıntılar resmin içinde gizlidir. Soyutlama da benzer mantıkta olup iç işleyişin gizli kalması anlamına gelir. Örneğin; bilgisayarın kullanımında kelime işlemci programına yazı yazdığınızda harflere her tıkladığınızda tek tek istediğiniz biçimde yazılıp kaydolduğunu görebilirsiniz. Ancak arka planda her harfin bir bilgisayar kodu vardır. İşlemci arka planda hafızayla haberleşip birçok işlem gerçekleşmektedir. Bu işlemlerin hepsi kullanıcıdan habersiz olmaktadır. Javada’da aynı mantıkta sınıflar tasarlanırken birçok işlem kullanıcıdan gizlenir. Yani yazılan iç fonksiyonları kullanıcıların bilmesine gerek yoktur.

Soyutlama için Java’da iki yöntem vardır; interface” tanımlamak, “abstract class” sınıf tanımlamak. Abstract metodlar yanlızca ne yapıldığı ile ilgilenir.

Abstraction metodlarda “abstract” anahtar kelimesi ile tanımlanmış olması gerekiyor.

Somut ya da somut olmayan fonksiyonlar tanımlanabilir. Soyut sınıflarda new anahtar kelimesi kullanılmaz. “Final” kelimesiyle yazılmış fonksiyonlar içerebilir.

// abstract sınıf örneği
public abstract class Doping {

    protected double price;
    protected double[] taxes;

    public double[] getTaxes() {
        return taxes;
    }

    public void setTaxes(double[] taxes) {
        this.taxes = taxes;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    // soyut metot örneği
    public abstract double calculate();
}

2. Polymorphism (Çok Biçimlilik)

Nesnenin birbirinden farklı nesneler şeklinde davranmasını sağlamamıza olanak veren yapıdır. Programda çok biçimli bir yapı oluşturarak esneklik kurmayı sağlar. Programa 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ğlar ve gereken zamanı da azaltır. Program içerisinde oluşan bir hatayı tek bir yapı içerisinde çözme kolaylığı sağlar. Örneğin; İş alımında her adayın mezun olma koşulu olup üniversite mezuniyeti için gereken koşullar ile bir lise mezuniyeti arasında farklılık olması.

Encapsulation(Kapsülleme)

Nesne tabanlı programlamanın ilk prensibi olarak bilinir. Dilin nesne kullanıcısından gereksiz uygulama ayrıntılarını saklar. Oluşturulan bir sınıf (class) içerisinde kullanıcının işlemlerini daha kolay gerçekleştirebilmesi için bazı işlemler birleştirilerek tek bir işlem gibi gösterilir. Bu birleştirme işlemine kapsülleme denir. Kapsülleme “private” değişkenlerin metotlar gibi kullanılmasına yardımcı olur. Okuma (Read Only) işleminin yanı sıra okumayazma (read — write) işleminin yapılmasını sağlar.

Inheritance(Kalıtım)

Kalıtım miras olarakta bilinmektedir. Babadan oğla geçiş gibi düşünülebilir. Yeni alanlar ve yeni yöntemler ekleyerek veya mevcut yöntemleri yeniden tanımlayarak alt bir sınıf türetmek için mevcut bir sınıfı iyileştirmektir. Alt sınıflar, mevcut sınıfın tüm alanlarını ve yöntemlerini devraldığı için yeniden kullanılmasını sağlar. Orijinal sınıfa üst sınıf, üst sınıfa dayalı sınıfa ise alt sınıf denir. Her sınıf, Java’daki Object sınıfından dolaylı olarak (implicitly) miras alır. Her sınıf bir nesnedir. Object sınıfının içinde alan yoktur, ancak equals ve toString gibi yöntemler vardır. Tüm sınıflar, hiyerarşinin en üstünde Object olacak şekilde bir hiyerarşide (ağaç) düzenlenir.

kaynak: https://www.w3schools.com/java/default.asp


메타데이터
post_id
97344cd7c0eb
slug
abstraction-polymorphism-encapsulation-inheritance-97344cd7c0eb
url
https://medium.com/@edam.glr/abstraction-polymorphism-encapsulation-inheritance-97344cd7c0eb
canonical_url
https://medium.com/@edam.glr/abstraction-polymorphism-encapsulation-inheritance-97344cd7c0eb
author_url
https://medium.com/@edam.glr
status
ok
fetched_at
2026-06-28 04:42:08