what is abstraction java learn with examples
Bu eğitim, programlama örnekleriyle birlikte Java'da Soyutlamanın ne olduğunu açıklar. Ayrıca soyut sınıfın ne olduğunu ve neden kullanıldığını da öğreneceksiniz:
Bu JAVA Serisinde, Soyutlama, Kapsülleme, Kalıtım ve Polimorfizm gibi dört sütun olarak da bilinen nesne yönelimli programlamanın (OOP) önemli özelliklerini tartışacağız.
OOP'nin ilk ayağı 'Soyutlama' dır. 'Soyutlama, kullanıcıya yalnızca ilgili bilgileri göstermek için verileri seçme işlemidir.'
=> Java Yeni Başlayanlar Kılavuzuna Bir Göz Atın.
Ne öğreneceksin:
OOP'de Soyutlama
Basit bir ifadeyle, soyutlama yalnızca nesnelerin ilgili özelliklerini “gösterir” ve gereksiz ayrıntıları “gizler”.
Örneğin, Bir araba sürerken, sadece arabayı çalıştırma / durdurma, hızlanma / frenleme vb. gibi otomobili sürmekle ilgileniriz. Gerçek çalıştırma / durdurma mekanizmasının veya hızlanma / frenleme işleminin dahili olarak nasıl çalıştığı ile ilgilenmiyoruz. Sadece bu detaylarla ilgilenmiyoruz.
Endişelendiğimiz şey, otomobili ilerletmemize ve hedefimize ulaşmamıza yardımcı olacak bu işlemlerin 'soyut' görünümüdür. Bu basit bir soyutlama örneğidir.
bugün c ++ ne için kullanılıyor
Böylelikle otomobilin tüm mekanizmaları ve süreçleri yerinde ancak son kullanıcının bakış açısından, yani otomobil sürücüsünün bakış açısından, bu süreçlerin yalnızca soyut görünümüyle ilgilenecektir.
Soyutlama, programlama çabalarını ve dolayısıyla karmaşıklığı azaltır. Uygulamayı kullanan bir son kullanıcının belirli bir özelliğin nasıl uygulandığı konusunda endişelenmesine gerek yoktur. Özellikleri gerektiği gibi kullanabilir.
Dolayısıyla soyutlamada olaylarla değil fikirlerle ilgileniriz. Bu, uygulama ayrıntılarını kullanıcıdan gizlediğimiz ve yalnızca işlevselliği son kullanıcıya açıkladığımız anlamına gelir. Böylece kullanıcı, 'nasıl yaptığını' değil, yalnızca 'ne yaptığını' bilecektir.
OOP'de soyutlama iki tür olabilir.
# 1) Veri Soyutlama
Veri soyutlamada, çoğunlukla karmaşık veri türleri oluşturur ve bunların uygulanmasını gizleriz. Yalnızca bu veri türlerini uygulamalarının ayrıntılarına girmeden manipüle etme işlemlerini açığa çıkarıyoruz.
Bu yaklaşımın bir avantajı, kullanıcıya maruz kalan davranışı değiştirmeden herhangi bir zamanda uygulamayı değiştirebilmemizdir.
# 2) Kontrol Soyutlama
Kontrol soyutlaması, uygulamanın bir parçası olan tüm kontrol ifadelerini toplar ve bunları bir birim olarak ortaya çıkarır. Bu özellik, bu kontrol ünitesini kullanarak bir çalışma özelliği gerçekleştirmemiz gerektiğinde kullanılır.
Kontrol soyutlaması, yapılandırılmış programlamanın ana birimini oluşturur ve kontrol soyutlamasını kullanarak karmaşık çerçevelere basit fonksiyonları tanımlayabiliriz.
Java'da Soyutlama Nedir
Java bir OOP dili olduğundan, soyutlama Java dilinin önemli özelliklerinden ve yapı taşlarından biri olarak görülebilir. Java'da, soyutlama soyut bir sınıf ve arayüz kullanılarak gerçekleştirilir.
Peki Java'da soyutlamayı nasıl uygularız? Java, soyutlamayı uygulamak için erişim dışı bir değiştirici 'soyut' sağlar. Bu soyut değiştirici sınıflar ve yöntemlerle kullanılabilir ancak değişkenlerle kullanılamaz.
Arayüz tam bir soyutlama sağlar, yani yalnızca yöntem prototipleri sağlar, bunların uygulanmasını sağlamaz. Soyut bir sınıf, en az bir yöntemin uygulanmaması gereken kısmi soyutlama sağlar.
Bu eğitimde soyut sınıfları detaylı olarak soyut sınıflarla tartışacağız. Arayüzleri sonraki eğitimlerimizde ayrıntılı olarak inceleyeceğiz.
Java Soyutlama Örneği
Aşağıdaki örneği ele alalım.
//abstract class abstract class Car{ abstract void accelerate(); } //concrete class class Suzuki extends Car{ void accelerate(){ System.out.println('Suzuki::accelerate'); } } class Main{ public static void main(String args()){ Car obj = new Suzuki(); //Car object =>contents of Suzuki obj.accelerate(); //call the method } } Çıktı:

Yukarıda verilen basit soyutlama örneğinin bir Sınıfı Car vardır. Bu sınıf Car'da, accelerate () için soyut bir yöntemimiz var. Sonra bu sınıfı Suzuki sınıfına alırız. Suzuki sınıfının içinde hızlandırma yöntemini uyguluyoruz.
Yukarıdaki örnek, soyut bir sınıfın nasıl tanımlandığını, miras alındığını ve daha sonra programda nasıl kullanıldığını gösterir.
Java Soyut Sınıfı Nedir
Java'nın soyut sınıfları ve arayüzleri kullanarak soyutlama yaptığından bahsetmiştik. Öncelikle soyut sınıfla ilgili her şeyi inceleyelim.
Soyut bir sınıf, 'abstract' anahtar sözcüğü ile bildirilen bir sınıf olarak tanımlanabilir ve somutlaştırılamayacak bir kısıtlaması vardır.
Soyut bir sınıfın herhangi bir soyut yöntemi olabilir veya olmayabilir (uygulama içermeyen bir yöntem). JVM söz konusu olduğunda, soyut bir sınıf, tam bir davranışı olmayan tamamlanmamış bir sınıftır.
Soyut bir sınıfın genel sözdizimi aşağıda verilmiştir:
abstract class { public abstract void abstractMethod(); public void normalMethod() { //method body } } Yukarıdaki soyut sınıfın söz diziminde gösterildiği gibi, soyut bir sınıfta soyut ve soyut olmayan yöntemlere sahip olabiliriz. 'Soyut' anahtar kelimesi, sınıf bildiriminden önce gelir.
Özetle, soyut bir sınıf aşağıda gösterildiği gibi tanımlanabilir.

Java'da Soyut Yöntem
Soyut bir yöntem, herhangi bir uygulama olmaksızın 'soyut' bir anahtar kelimeden önce gelen bir yöntemdir. Soyut bir yöntem, soyut bir sınıf içinde bildirilir.
Soyut bir yöntem, bir uygulaması olmadığı için sınıfı eksik kılan yöntemdir. Dolayısıyla, sınıfa soyut bir yöntem eklediğimizde, doğal olarak sınıf tamamlanmamış olur.
Soyut yöntemi bir alt sınıfta uygulayarak kullanabiliriz, yani bir sınıf soyut sınıfı miras alır ve ardından soyut sınıfta bildirilen tüm soyut yöntemleri geçersiz kılarak uygular veya sağlar.
Böylece alt sınıfta soyut yöntemin geçersiz kılınması zorunlu hale gelir. Soyut yöntem alt sınıfta da uygulanmazsa, alt sınıfı da 'soyut' olarak bildirmemiz gerekir.
Soyut yöntemin genel beyanı şöyledir:
Öz geçersiz methodName (parametre_listesi);
Soyut yöntemi yazarken aşağıdaki kuralları hatırlamamız gerekir:
- Bir veya daha fazla soyut yöntem içeren bir sınıf, soyut bir sınıftır.
- Abstract anahtar sözcüğü ile birlikte bazı diğer anahtar sözcükler kullanılmamalıdır.
Bu nedenle, aşağıdaki kombinasyonlar Java'da yasa dışıdır.
- final
- soyut yerli
- soyut statik
- soyut özel
- soyut senkronize
- soyut katıfp
Soyut bir sınıf örneği ve soyut bir yöntem uygulayalım.
//abstract class abstract class Bank{ abstract int getInterestRate(); } //concrete class class Citi extends Bank{ int getInterestRate(){return 7;} } //concrete class class HSBC extends Bank{ int getInterestRate(){return 6;} } class Main{ public static void main(String args()){ Bank b; b = new Citi (); // concrete class object System.out.println('Citi Rate of Interest is: '+b.getInterestRate()+'%'); b = new HSBC (); // concrete class object System.out.println('HSBC Rate of Interest is: '+b.getInterestRate()+'%'); } } Çıktı:

Yukarıdaki örnekte, bir Banka sınıfımız var. Bu sınıfta, getInterestRate () adında soyut bir yöntemimiz var. Ardından, Banka sınıfından miras alan ICICI ve BOI olmak üzere iki sınıf ilan ediyoruz. Her iki sınıf da ilgili faiz oranlarını döndürerek getInterestRate () yöntemini uygular.
Daha sonra ana yöntemde bir banka nesnesi oluşturuyoruz. İlk olarak, banka nesnesi ICICI sınıfına ait bir nesne içerir ve faiz oranını gösterir. Ardından, BOI nesnesi oluşturulur ve faiz oranını görüntüler.
Bu nedenle, Banka sınıfının bir tür taslak veya faiz oranı almamızı sağlayan bir yapı olduğunu varsayabiliriz. Bu yapıdan istediğimiz kadar somut sınıf oluşturabiliriz ve ardından her banka nesnesi için ilgili faiz oranlarını alabiliriz (bu, ana yöntemde gösterilmiştir).
Java'da Soyut Bir Sınıfın Kullanımı Nedir
Gerçekte kendi uygulamasına sahip olmadığı halde neden soyut bir sınıf kullanıyoruz?
Yukarıdaki sorunun cevabının yanı sıra, aşağıdaki örnekte soyut bir sınıfın nasıl kullanılacağını da göstereceğiz.
Bir Araç örneğini ele alalım. Araçların birçok türde olabileceğini biliyoruz. Arabalar, Scooterlar, bisikletler, mopedler, otobüsler vb. Olabilir. Birçok araç türü olmasına rağmen, türlerine bakılmaksızın tüm araçlarda ortak olan bazı özelliklere veya niteliklere sahiptir.
Örneğin, her aracın bir modeli, şasi numarası, rengi vb. vardır. Her birinin çalıştırma, durdurma, hızlanma, frenleme gibi işlevleri vardır. Artık her araç, diğerleri için ortak olan yukarıdaki özelliklere ve yöntemlere sahip olacaktır. Bir araç kullanıcısı olarak aynı zamanda bazı yönlerle ilgilenmeyebiliriz.
Örneğin, Bir kişi araba kullanıyorsa, ilgileneceği şey aracı çalıştırmak ve durdurmak veya aracı hızlandırmak veya frenlemektir. Aracın nasıl çalıştığını veya durduğunu bilmekle ilgilenmeyecektir. Biz sadece fonksiyonların soyut çalışmasıyla ilgileniyoruz, detaylarıyla değil.
Şimdi, yukarıdaki örnek sistemi bir yazılım uygulamasında temsil etmek istiyorsak, o zaman onu nasıl tasarlarız? Öncelikle biraz soyutlama yapacağız. Şimdi, bazı işlevlerin ortak olduğunu biliyoruz, ancak her modele bağlı olarak bu işlevlerin uygulanması farklı olacaktır.
test planı nasıl yapılır
Öncelikle soyut bir sınıf “Araç” ilan ediyoruz.
Bu sistemi aşağıda gösterdik:

Böylece soyut bir Sınıf Araçlarımız olacak ve aracın her modelini temsil eden somut bir sınıf olacak. Gösterim amacıyla sadece üç model kullandık, yani araba, bisiklet ve scooter.
Aşağıda, yukarıdaki sistemden sınıf hiyerarşisi verilmiştir.
abstract class Vehicle{ abstract void start () ; abstract void stop (); abstract void accelerate (); abstract void brake (); } class Car extends Vehicle{ void start () { //code here…} void stop () { //code here…} void accelerate () { //code here…} void brake () { //code here…} } class Bike extends Vehicle{ void start () { //code here…} void stop () { //code here…} void accelerate () { //code here…} void brake () { //code here…} } class Scooter extends Vehicle{ void start () { //code here…} void stop () { //code here…} void accelerate () { //code here…} void brake () { //code here…} } Yani bir Araç soyut sınıfımız ve üç sınıf Araba, Bisiklet ve Scooter'ımız olacak. Bu sınıfların her biri, Araç sınıfını genişletir ve her bir soyut yöntemi geçersiz kılar.
Bu nedenle, genel olarak, temsil edecek ortak yöntemler veya işlemlere sahip böyle bir sistemi temsil etmemiz gerektiğinde, kullanıcıya sadece dış perspektifi sunmak için soyutlamaya gidiyoruz. Sonuç olarak, ortak yöntemleri çıkarıp soyut yöntemler olarak temsil ediyor ve bu soyut yöntemleri ortak bir soyut sınıfta topluyoruz.
Soyut bir sınıf olarak temsil edilen bir sistemin ana hatlarını ve soyut yöntemler olarak işlemleri elde ettikten sonra, verilen soyut sınıftan herhangi bir sayıda sınıfı türetebilir ve bu işlemleri her sınıf için uygulamak için soyut yöntemleri geçersiz kılabiliriz.
Bu şekilde bir sistem tasarlamak faydalı olur.
Soyut Sınıf ve Arayüz
Soyut sınıfı yukarıda gördük. Arayüzler, soyutlamayı uygulayan diğer yapı taşlarıdır. Arayüzler sözleşmelerdir ve arayüzü uygulayan sınıflar bu sözleşmelere uymak zorundadır.
Arayüzlerdeki sözleşmeler, uygulanmayan yöntemlerden başka bir şey değildir. Arayüzlerin içinde sadece yöntem prototiplerine sahip olacağız. Arayüzlerde tek bir yöntem uygulaması olmayacaktır.
Aşağıdaki gibi bir arayüz bildirimimiz varsa:
public interface interfaceA{ void myInterfaceMethod (); } Daha sonra, interfaceA'yı uygulayan herhangi bir sınıfın 'myInterfaceMethod' değerini geçersiz kılması gerekir.
Bir sınıftaki yöntemi hiç geçersiz kılmazsak, o zaman o sınıf soyut olarak temsil edilir.
abstract class TestClass implements interfaceA{ // not a compulsion to override myInterfaceMethod. } Arayüzde daha sonra ayrı bir eğitimimiz olacak.
Ardından, Java'daki Soyut sınıflar ve Arayüzler arasındaki bazı farklılıkları tartışalım.
Soyut Sınıf ve Arayüz Arasındaki Fark
| Soyut sınıf | Arayüz |
|---|---|
| Soyut bir sınıf, genel üyeler dışında özel veya korumalı veri üyelerine sahip olabilir. | Arayüz üyeleri varsayılan olarak herkese açıktır. |
| Soyut bir sınıf, soyut ve / veya soyut olmayan yöntemlere sahip olabilir. | Bir arayüz yalnızca soyut yöntemlere sahip olabilir. |
| Özet, son değişkenleri içerebilir veya içermeyebilir. | Arayüzler, değişkenleri varsayılan değişkenler olarak sonlandırabilir. |
| Soyut bir sınıf, son, statik veya statik olmayan veya nihai olmayan değişkenlere sahip olabilir. | Arayüzler yalnızca son ve statik değişkenlere sahip olabilir. |
| Soyut bir sınıf, arayüz uygulaması sağlayabilir. | Arabirimler soyut bir sınıf uygulayamaz. |
| Soyut bir sınıf, 'extends' anahtar sözcüğü kullanılarak miras alınır. | Arayüz, 'uygular' anahtar sözcüğü kullanılarak gerçekleştirilir. |
| Soyut bir sınıf, diğer sınıfları genişletebilir veya birden çok arabirim uygulayabilir. | Arayüz yalnızca başka bir arayüz uygulayabilir. |
Java'da Soyut Sınıf Ve Arayüz Ne Zaman Kullanılmalı
Java uygulamasında soyut sınıfın ne zaman ve arabirimlerin ne zaman kullanılacağına ilişkin karar, eldeki problem iyice anlaşıldıktan sonra akıllıca alınmalıdır. Aşağıda gösterildiği gibi dikkate almamız gereken iki husus vardır.
Kısmi Davranışa Sahip Soyut Sınıflar
Soyut sınıfların tamamen daha az uygulanamayacağını biliyoruz. Kısmi davranışları olabilir. Öte yandan, arayüzlerin herhangi bir uygulaması yoktur. Dolayısıyla, soyut bir sınıf ile bir uygulama arasında seçim yapmak zorunda olduğumuzda, uygulamamızın bu yönünü göz önünde bulundurmamız gerekir.
Bu, önce tasarladığımız uygulamanın soyut bir sınıfta ayırabileceğimiz herhangi bir ortak kısmi uygulamaya sahip olup olmadığına karar vermemiz gerektiği anlamına gelir.
Örneğin, bir web uygulaması tasarladığımızı düşünün. Bunun için, Servlet, REST API, vb. Gibi bazı web teknolojilerini kullanmamız gerekecek. Şimdi bu web teknolojilerinin her birinde, geliştirmekte olduğumuz uygulama ne olursa olsun uygulanacak bazı teknikler veya adımlar var. Ardından özelleştirilmiş uygulamamızı oluşturuyoruz.
Yani bu durumda, web teknolojisinin yürütmesi gereken kesin kod, soyut bir sınıfa konabilir. Bunun için bir arayüz alabilir miyiz? Hayır. Bunun nedeni, arayüzün bir uygulamaya sahip olamamasıdır.
Yalnızca Sözleşmeli Arayüzler
Arayüzlerin, bunun bir parçası olan sözleşmeleri veya yöntemleri olduğunu biliyoruz. Bu yöntemler yalnızca prototiplerdir. Bu arayüzleri bir sınıfta uygulamalı ve sonra yöntemleri geçersiz kılmalıyız.
karakteri int c ++ olarak değiştir
Şimdi Java Collections Framework Harita arayüzünü düşünün. HashMap, TreeMap ve HashTable gibi birçok sınıf bu arayüzü uygular. Bu sınıfların her birinin farklı bir uygulaması vardır. Soyut sınıfta temsil edilebilecek ortak bir davranışları yoktur.
Yaptığımız şey, yöntem prototipleriyle bir arayüz tasarlamak ve ardından her bir sınıfı uygulamaktır.
Bu şekilde, soyut bir sınıf ve arayüz arasında seçim yapmadan önce her faktörü doğru şekilde tartmalıyız.
Soyutlama ve Kapsülleme Arasındaki Fark
Soyutlama ile OOP'nin bir diğer önemli özelliği, yani kapsülleme arasındaki bazı farklılıkları tartışalım.
| Soyutlama | Kapsülleme |
|---|---|
| Bilgiyi elde etme ve soyutlama süreci | Bilgiyi bağlama süreci. |
| Soyutlama tekniği, tasarım veya arayüz seviyesindedir. | Kapsülleme mekanizması, uygulama düzeyindedir. |
| Soyutlama ayrıntıları gizler. | Kapsülleme, bilgileri tek bir birimde bağlayarak bilgi güvenliğini sağlar. |
| Soyutlama, soyut sınıflar ve arayüzler kullanılarak gerçekleştirilir. | Erişim değiştiriciler, yani genel, özel ve korumalı ve varsayılan, kapsüllemede bir rol oynar. |
| Soyutlamada, kullanıcıya tek soyut görünüm sunulurken, karmaşık ve ayrıntılı veriler kullanıcıdan gizlenir. | Kapsüllemede, veriler bir birim olarak paketlenir ve erişim değiştiriciler ve alıcı ve ayarlayıcı yöntemleri kullanılarak korunabilir veya erişilebilir hale getirilebilir. |
Sıkça Sorulan Sorular
S # 1) Soyutlama ve Veri aynı mı saklıyor?
Cevap: Hayır, Soyutlama ve Veri gizleme aynı şey değildir. Ancak her ikisi de nesne yönelimli programlamanın önemli özellikleridir. Soyutlama, arka plan ayrıntılarını gizleme süreci iken, veri gizleme, verileri doğrudan erişimden izole etme tekniğidir.
S # 2) Soyutlamanın Avantajları Nelerdir?
Cevap: Soyutlamanın birkaç avantajı aşağıda verilmiştir:
- Arka plan ayrıntılarını gizleyerek ve yalnızca soyut görünümü kullanıcıya göstererek, soyutlama kodu daha basit ve daha okunaklı hale getirir.
- Soyutlama, gereksiz ayrıntıları koruduğu için kodu küçültür.
- Kod bakımı, soyutlama olmadan karmaşık ve zor hale gelebilir.
S # 3) Soyutlama neden bu kadar önemli?
Cevap: Soyutlama, önemli olan ve dünyaya sızdırılırsa kaosa yol açabilecek arka plan ayrıntılarını gizlememizi sağlar. Arka plan ayrıntılarını gizleyerek ve kullanıcıya yalnızca gerekli arabirimi göstererek, soyutlama uygulamaları basitleştirir.
S # 4) Soyutlamayı gerçek zamanlı bir örnekle açıklayın.
Cevap: Geometrik şekiller, araçlar vb. Dahil olmak üzere birçok gerçek zamanlı soyutlama örneği vardır. Yine bir başka örnek de ATM'dir (Otomatik Para Çekme Makinesi). ATM, nakit çekme, bakiye kontrolü, para transferi gibi işlemleri destekler. Ancak bu işlemlerin dahili olarak nasıl çalıştığının farkında değiliz.
Bize yalnızca gerekli işlemleri seçmemiz ve gerçekleştirmemiz için bir kullanıcı arayüzüne sahip bir monitör verilir.
S # 5) Kapsülleme olmadan Soyutlamayı başarabilir miyiz?
Cevap: Soyutlama, uygulama ayrıntılarını korur ve kapsülleme, nesne ayrıntılarını gizler. Nesne, gerçek dünyanın soyut biçimidir ve detayları kapsülleme kullanılarak gizlenir. Bu nedenle, soyutlama için kapsülleme gereklidir.
Sonuç
Bu eğitimde, Java'da soyutlamayı ayrıntılı olarak tartıştık. Soyutlama, gereksiz ayrıntıları kullanıcıdan gizleme tekniğidir. Kullanıcıya yalnızca ilgili ayrıntılara erişim verilir. Araç operasyonları veya ATM operasyonları, gerçek dünyadaki klasik soyutlama örnekleridir.
ATM kullandığımızda, bu işlemin dahili olarak tam olarak nasıl yapıldığına dair detayları bilmek zorunda kalmadan sadece nakit çekme vb. İşlemleri gerçekleştirmekle ilgileniyoruz.
Java, soyut sınıflar ve arayüzler aracılığıyla soyutlama sağlar. Arayüzler% 100 soyutlama sağlarken, soyut sınıflar kısmi soyutlama sağlar. Arayüzler ve soyut sınıflar arasında seçim, geliştirilecek uygulamaya ve ayrıca hangi bilgilerin kullanıcıya sunulacağına bağlı olarak yapılmalıdır.
Ayrıca bu derste soyut yöntemleri ve soyut sınıflar ve arayüzler arasındaki farkları tartıştık.
=> TÜM Java Öğreticilerini Buradan Kontrol Edin.
Önerilen Kaynaklar
- Java Arayüzü ve Örneklerle Soyut Sınıf Eğitimi
- Java Tamsayı ve Örneklerle Java BigInteger Sınıfı
- Örneklerle Java Tarayıcı Sınıfı Eğitimi
- Java Vektör Nedir | Örneklerle Java Vektör Sınıfı Eğitimi
- Java Enum: Örneklerle Java Numaralandırma Eğitimi
- Java Temelleri: Java Sözdizimi, Java Sınıfı ve Temel Java Kavramları
- Yeni Başlayanlar İçin JAVA Eğitimi: 100+ Uygulamalı Java Video Eğitimi
- Java Yineleyici: Java'da Yineleyicileri Örneklerle Kullanmayı Öğrenin