nesne tabanlı programlama java örnekleri / One moment, please...

Nesne Tabanlı Programlama Java Örnekleri

nesne tabanlı programlama java örnekleri

Benzer belgeler

JComponent in alt sınıfları

JComponent in alt sınıfları JAVA SWING Javax.Swing paketi Java Foundation Classes (JFC) kütüphanesi içindedir. 134 sınıfı olan, 25 arayüz kılgılayan büyük bir pakettir. Java.AWT (Java Abstract Window Toolkit) paketinin üzerine kuruludur

Detaylı

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR KUYRUKLAR QUEUES Doç. Dr. Aybars UĞUR Giriş Bu bölümde gerçek yaşamdaki kuyrukların bilgisayardaki gösterimleri üzerinde durulacaktır. Kuyruklar, eleman eklemelerin sondan (rear) ve eleman çıkarmaların

Detaylı

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra

Detaylı

BİL-141 Bilgisayar Programlama I (Java)

BİL-141 Bilgisayar Programlama I (Java) 1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,

Detaylı

KUYRUKLAR. Doç. Dr. Aybars UĞUR

KUYRUKLAR. Doç. Dr. Aybars UĞUR KUYRUKLAR QUEUES Doç. Dr. Aybars UĞUR Giriş Bu bölümde gerçek yaşamdaki kuyrukların bilgisayardaki gösterimleri üzerinde durulacaktır. Kuyruklar, eleman eklemelerin sondan (rear) ve eleman çıkarmaların

Detaylı

VERİ YAPILARI DERS NOTLARI

VERİ YAPILARI DERS NOTLARI T.C. EGE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ VERİ YAPILARI DERS NOTLARI (FIFTH EDITION) Y. Doç. Dr. Aybars UĞUR Copyright 2009, 2005, 2003, 2002, 1999 Eylül, 2009 İZMİR Y.

Detaylı

BMH-303 Nesneye Yönelik Programlama

BMH-303 Nesneye Yönelik Programlama BMH-303 Nesneye Yönelik Programlama Kurucu metotlar (constructors) ve statik deyimi Dr. Musa ATAŞ Siirt Üniversitesi Bilgisayar Mühendisliği Kurucu Metotlar (Constructors) Kurucu metot çeşitleri Varsayılan

Detaylı

Programlama Dillerinde Kullanılan Veri Tipleri

Programlama Dillerinde Kullanılan Veri Tipleri Programlama Dillerinde Kullanılan Veri Tipleri Taban/Biçim Basic Paskal C/C++/C#/Java 10 (Decimal ) - - - 16 (Hexadecimal) &hsayı veya &Hsayı $sayı 0xsayı veya 0Xsayı Üstel eüs veya Eüs eüs veya Eüs eüs

Detaylı

Java String İşlemleri

Java String İşlemleri Java String İşlemleri Karakterler (Characters) "char" kelimesi bir karakter tanımlamak için kullanılır. Karakter tek tırnak içine alınmalıdır. Bir char'ın aralığı 0 ile 65536 arasındadır. Char türü işaretsiz

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor

Detaylı

Örnek 1: Programı yazın ve çalıştırın.

Örnek 1: Programı yazın ve çalıştırın. 1 0 Örnek 1: Programı yazın ve çalıştırın import javautilscanner; public class MatrisFaiz1 public static void main(string[] args) Scanner klavye=new Scanner(Systemin); double [][] faiztablo = new double

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Genel Bilgiler Ders konuları 1. Programlamaya Giriş 2. Program Denetimi ve Operatörler 3. Nesnelerin

Detaylı

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu SORU 1 Dünyanın en uzun beş nehrini öğeleri olarak kabul eden bir yığıt (stack) yaratınız. Yığıtın üçüncü öğesini bulunuz. Yığıtın üstündeki öğeyi bulunuz ve

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

Sunum İçeriği. Programlamaya Giriş 22.03.2011 Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

public static int Toplam int x, int y

public static int Toplam int x, int y static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir.

Detaylı

Klavyeden Basit Giriş/Çıkış İşlemleri

Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden Basit Giriş/Çıkış İşlemleri Klavyeden veri girilmesi, girilen verilere çeşitli işlemler uygulandıktan sonra ekrana yazdırılması ya da herhangi bir yazıcıdan çıktı alınması gibi işlemlerdir. Javada

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 5 Nesneye Yönelik Programlamaya Giriş Bu

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 7 Abstract (Soyut Sınıflar) Bu bölümde;

Detaylı

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ 2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 7 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Java Programlama Dili ve Algoritmadan Kodlamaya Geçiş) Yrd. Doç. Dr. İbrahim Küçükkoç

Detaylı

Dizi ( Array ) ve Dizgi ( String )

Dizi ( Array ) ve Dizgi ( String ) Java da Dizi ( Array ) ve Dizgi ( String ) Tanımlama BBS-515 Nesneye Yönelik Programlama Ders #6 (25 Kasım 2009) İçerikç Geçen ders: Kalıtım ( inheritance ) -- tekrar ziyaret Java da super kullanımı Java

Detaylı

JAVADA DİZİ İŞLEMLERİ

JAVADA DİZİ İŞLEMLERİ JAVADA DİZİ İŞLEMLERİ Javada diziler nesnedirler, cdeki gibi hafızada yer kaplayan pointer değillerdir. Javada diziler, cye göre daha güvenilirdir. Dizilerin elemanlarına gelişigüzel değerler atayamazsınız.

Detaylı

D İ Z İ L E R A R R A Y S

D İ Z İ L E R A R R A Y S D İ Z İ L E R A R R A Y S 1 Örneğin 120 adet öğrencinin adını klavyeden girip, daha sonra bunları ekrandan yazdıralım. Bunun için, her öğrenci için ayrı bir değişken tanımlanmalıdır. String ad1; String

Detaylı

Applet Form Örnekleri2

Applet Form Örnekleri2 Applet Form Örnekleri2 Çeşitli konularda formlar yardımıyla hazırlanmış applet uygulamaları Applet uygulamasında örnekteki gibi girilebilen matematiksel uygulamanın sonucunu veren uygulama package javaapplication1;

Detaylı

Nesneye Dayalı Programlama

Nesneye Dayalı Programlama SAKARYA ÜNİVERSİTESİ Nesneye Dayalı Programlama Hafta 4 Prof. Dr. Ümit KOCABIÇAK Öğr. Gör. Özgür ÇİFTÇİ Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir. "Uzaktan Öğretim"

Detaylı

İlgili Konular: Object.equals(java.lang.Object), Object.hashCode(), rehash(), Collection, Map, HashMap, TreeMap, Serialized Form

İlgili Konular: Object.equals(java.lang.Object), Object.hashCode(), rehash(), Collection, Map, HashMap, TreeMap, Serialized Form Class Hashtable java.util Class Hashtable java.lang.object java.util.dictionary java.util.hashtable Kılgıladığı Arayüzler: Serializable, Cloneable, Map Altsınıfları: Properties, UIDefaults

Detaylı

11- FONKSİYONLAR (FUNCTIONS)

11- FONKSİYONLAR (FUNCTIONS) 1 Fonksiyon : Belirli bir işi yapan programın bir isim altına tanımlanarak, o isimle çağrılarak kullanılması. Fonksiyonun faydaları : Programın modülerliğini arttırır. Aynı işi yapan program parçası tekrar

Detaylı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 3 Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Sınıflar ve Fonksiyonlar Tekrar kullanılabilir kodlar 1 Nesne Tabanlı Tasarım

Detaylı

Karşılaştırma İşlemleri ve Koşullu İfadeler

Karşılaştırma İşlemleri ve Koşullu İfadeler Karşılaştırma İşlemleri ve Koşullu İfadeler BİL131 - Bilişim Teknolojileri ve Programlama Hakan Ezgi Kızılöz Karşılaştırma İşlemleri Java'da sayısal veri tiplerinin karşılaştırılması için aşağıdaki karşılaştırma

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

Decorator Tasarım Şablonu

Decorator Tasarım Şablonu Decorator Tasarım Şablonu KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com http://www.javadergisi.com Mevcut bir sınıf hiyerarşisini ya da sınıfın yapısını değiştirmeden, oluşturulan

Detaylı

BAĞLAÇLI LİSTELER LINKED LISTS

BAĞLAÇLI LİSTELER LINKED LISTS BAĞLAÇLI LİSTELER LINKED LISTS Liste Günlük yaşamda listeler pek çok yerde kullanılmaktadır: Alışveriş listeleri, adres listeleri, davetli listeleri gibi. Bilgisayar programlarında da listeler yararlı

Detaylı

JAVA DEĞİŞKEN VE OPERATÖRLER. M.İLKUÇAR - 1

JAVA DEĞİŞKEN VE OPERATÖRLER. M.İLKUÇAR - 1 JAVA DEĞİŞKEN VE OPERATÖRLER M.İLKUÇAR - [email protected] 1 JAVA Değişken : program içerisinde değeri dinamik olarak değişebilen yapılardır. Belirli bir tipi vardır. Bu yüzden tanımlandığı tipteki verileri

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama Nesne Yönelimli Programlama Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu, M. Özbayoğlu, M. Erten, O. Ergin kitabı kullanılarak hazırlanmıştır. Konular Giriş Alt Sınıflar

Detaylı

Operator Aşırı Yükleme (Operator OverLoading)

Operator Aşırı Yükleme (Operator OverLoading) Operator Aşırı Yükleme (Operator OverLoading) Operator Aşırı Yükleme Operatör metotları bir nesnenin ifadeler içinde operatörlerle kullanıldığı zaman davranışını belirler. Temel veri türleri için operatörler

Detaylı

EMT2226 Nesne Yönelimli Programlamaya Giriş

EMT2226 Nesne Yönelimli Programlamaya Giriş 2017-2018 Bahar Yarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü EMT2226 Nesne Yönelimli Programlamaya Giriş 2 Yrd. Doç. Dr. İbrahim Küçükkoç Web: ikucukkoc.baun.edu.tr Email: [email protected]

Detaylı

// hataları işaret eden referans

// hataları işaret eden referans System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin

Detaylı

7. HAFTA. Erişim Belirleyiciler

7. HAFTA. Erişim Belirleyiciler 7. HAFTA Erişim Belirleyiciler Java dilinde 4 tür erişim belirleyicisi vardır; bunlar friendly, public, protected ve private dir. Bu erişim belirleyiciler global alanlar (statik veya değil) ve yordamlar

Detaylı

BAĞLAÇLI LİSTELER LINKED LISTS

BAĞLAÇLI LİSTELER LINKED LISTS BAĞLAÇLI LİSTELER LINKED LISTS Liste Günlük yaşamda listeler pek çok yerde kullanılmaktadır. Alışveriş listeleri, adres listeleri, davetli listeleri gibi. Bilgisayar programlarında da listeler yararlı

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

Nesne ve Nesne Yönelimli Programlama Teorisinin 4 Temel Özelliği

Nesne Yönelimli Programlama Teorisi'nde 4 temel özelliğin gerçekleştirilmesi zorunlu sayılmıştır ve bu temel özelliklerden birini bile sağlamayan bir dil saf (pure) Nesne Yönelimli Programlama Dili sayılmaz.

Bu 4 temel özellik;

1. Soyutlama (Abstraction)

Soyutlama denilince, nesneyi bazı karakteristikleri olan ve bazı eylemleri gerçekleştirebilen bir veri tipi olarak genelleştirmek anlaşılmalıdır. Yeryüzü üzerinde bulunan her şey bir nesnedir. Bilgisayar yazılımı açısından nesne, bir varlığın temsil biçimidir. Örneğin; bina bir nesnedir. Binayı bilgisayar yazılımı içinde temsil etmek istersek, öncelikle bu nesnenin yani binanın ayırt edici özelliklerini belirlemeliyiz.

Örneğin;

  • Bina yüksekliği

  • Dış yüzey rengi

  • Kat sayısı

  • Zemin alanı

  • Zemin boyutları

gibi özellikler, binayı temsil etmek için ilk akla gelen birkaç özelliktir. O halde nesnenin bilgisayarda temsilinde, özellikleri kilit rol oynamaktadır.

Nesnenin karakteristikleri, özellikler ve gerçekleştirebileceği eylemler de metot adını alır. Bu anlamda, soyutlaştırmanın sonucunda bir nesne;

  • Özellikleri (properties, member variables - Objective-C)

  • Metotları (methods) ile temsil edilebilir.

Nesne Yönelimli Programlama Dilleri, soyutlamayı sınıf (Class) yapısı ile gerçekleştirirler. Sınıf yapısı içinde o nesneye ait özellikler ve metotlar tanımlanabilir.

Ancak sınıf soyut bir yapıdır ve doğrudan kullanılamaz. O sınıftan üretilen örnekler sınıfa ait tüm özelliklere ve metotlara sahip olurlar. Bunlar program içinde doğrudan kullanılabilirler. Sınıftan üretilen her örnek, aynı özellik ve metotlara sahip olacak ancak özelliklerin değerleri doğal olarak farklı olabilecektir.

Örneğin, insanı bir nesne olarak düşünürsek ve insan sınıfı olarak soyutlarsak, ilk akla gelen özellikleri; boy, kilo, IQ ve EQ değerleri, eğitim düzeyi vb. gibi özellikler olur. Bu özelliklerin değerleri doğal olarak her insan için farklıdır. İnsan için ilk akla gelen eylemler (metotlar) ise; yürüme, okuma-yazma, konuşma, araç kullanma vb. gibi metotlardır.

2. Sarmalama / Paketleme (Encapsulation)

Paketlemenin anlamı; sınıfı oluşturan metot ve özelliklerin gerçekleştirme biçiminin, bu sınıfı kullanacak olan kullanıcılardan gizlenmiş olmasıdır.

NESNE = VERİ + METODLAR

şeklinde ifade edilen bağıntı aslında Nesne Yönelimli Programlama'nın temelini açıklamaktadır. Veri (özellikler) ve veri üzerinde işlem yapan kod (metotlar) bir arada bulunur ve nesneyi oluşturur. Nesneyi tanımlayan sınıfın iç ayrıntıları, normal olarak programın artakalan kısmı için görünür değildir.

Bir nesne sınıfının gerçekleştirimini değiştirirsek, yani aynı sınıfı metot ve özellikleri aynı kalmak koşuluyla farklı bir programlama tekniğiyle oluşturursak, o sınıfın dış dünyaya olan arayüzü değişmediği sürece (metot ve özellikler aynı kaldığı sürece) bu sınıfı kullanan program kodlarınızda bir değişiklik yapmamıza gerek kalmayacaktır.

3. Miras Alma (Inheritance)

Nesneye yönelik programlamada, bir nesne, genellikle bir nesne sınıfına ait bir örnektir (instance).

Örneğin, Albert Einstein, insan sınıfının bir örneğidir. Bir nesne sınıfından alt sınıflar (subclasses) oluşturulabiliyorsa, türetme özelliği (derivation) var demektir. Örneğin insan sınıfı, canlı sınıfının bir alt sınıfıdır.

Kendisinden alt sınıf üretilen sınıfa, temel sınıf (baseclass) veya süper sınıf (superclass) veya ana sınıf (parentclass) adı verilir.

Subclass yerine child class terimi de kullanılmaktadır.

Alt sınıfın nesneleri, türetildikleri temel sınıfa ait özellikleri alıyorsa, burada miras alma (inheritance) özelliği vardır denir.

Bu anlamda, miras alma özellikli bir nesne yönelimli programlama dilinde, bir nesne sınıfından türetilen alt nesne sınıfına ait nesneler, üst sınıfın özelliklerini (properties) ve metodlarını (methods) aynen alırlar.

4. Çok Biçimlilik (Polymorphism)

Farklı nesnelerin, aynı mesaja (olaya ya da uyarıma) farklı şekillerde cevap verebilme yeteneğidir.

Her nesne sınıfı, kendi metotlarını paketlediği için ve bu metotlar programın kalan kısmı için gizli olduğundan, farklı sınıflar aynı isimde bazı metotlara sahip olabilirler.

Örneğin ŞEKİL adlı bir süper sınıfımız (super class) olsun. Bu sınıftan,DAİRE, KARE ve ÜÇGEN adlı 3 alt sınıf türettiğimizi varsayalım. Bu alt sınıfların her biri kendi örneklerini çizmek için ÇİZadlı bir metoda sahip olabilir. Fakat, her bir alt sınıf için bu metot aynı olmasına karşın, bu metodu devreye sokmak için gönderilecek mesajdan sonra her alt sınıfa ait nesne farklı bir şekil (yani kendini, yani bir üçgen, daire veya kare) çizecektir.

Nesne Yönelimli Programlamanın sınıf türetebilme özelliği sayesinde, bir nesne hiyerarşisi oluşturma imkânı bulunnmaktadır.

Java Dersleri – Nesne Yönelimli Programlama

Merhaba arkadaşlar,
mobilhanem.com üzerinden anlattığımız/yayınladığımız derslerimize Temel Java Dersleri başlığı altında Nesne Yönelimli Programlama ‘ya giriş yaparak devam edeceğiz.

Nesne Yönelimli Programlama sadece Java yazılım diline ait bir kavram veya bir yöntem değildir. Yapısal olarak ilgili gereksinimleri sağlayan yazılım dilleri Nesne Yönelimli Programlama ‘ya destek verebilirler. Örneğin C programlama dili Nesne Yönelimli Programlama dili değil, Fonksiyonel (Procedural) bir programlama dilidir. C++ ise C’nin Nesne Yönelimli Programlamaya yönelik eksiklerinin giderildiği ve C dilinden üretilmiş bir Nesne Yönelimli Programlama dilidir. Fonksiyonel programlama dillerinde işler fonksiyonlar üzerinden yürürken, Nesne Yönelimli Programlama dillerinde işler nesneler üzerinden yürütülmektedir. Nesne ve sınıf yapılarıyla ilgili detaylı bilgiye bir önceki Nesne ve Sınıf Yapısı dersimizden ulaşabilirsiniz.

Bu dersimizde öncelikle Nesne Yönelimli Programlama nedir sorusunun teorik olarak cevabını verelim, ardından pratik olarak bir kaç örnek ile teorik bilgimizi pekiştirelim. Nesne Yönelimli Programlama da temel mantık, yapacağımız işlemleri tek bir sınıf içerisinde alt alta yazılmış uzun kodlarla değilde daha kısa yazılmış ve sınıfların mantıksal olarak birbirinden ayrılmış bir şekilde tasarlanmasıdır. Hatta sınıflar içerisinde yapılacak işlemlerin farklı metotlar içerisinde yazılarak yapının daha sade ve anlaşılır hale gelmesini sağlamaktır. Burada esas amaç; mantıksal yapıları kullanırken kalıtımdan faydalanmak, sınıfları soyutlamak, ilişkili metotları, değişkenleri kapsüllemek ve bir arayüz vasıtasıyla birden çok sınıfa çok biçimlilik sağlamaktır. Biraz zorlama ile kurduğum son cümlemde aslında Java’da Nesne Yönelimli Programlama parçalarından bahsettim.

Design Patterns, Clean Code, TDD(Test Driven Development)

     Buraya kadar tüm derslerimizi sırayla takip ettiyseniz, artık Java’da nesne nedir, nasıl oluşturulur gibi soruların cevaplarını biliyor olmanız gerekmektedir. Nesneleri nasıl oluşturacağımızı biliyoruz, peki oluştururken nelere dikkat etmeliyiz? Bu dersin konusu olmasa da çok ufak bilgiler verebilirim.

     Simple Responsibility Principle (SRP) Design Pattern konusuna dikkat etmeliyiz. Cohesion ve Coupling konularına dikkat etmeliyiz. Bunlar aslında her yazılımcının bilmesi ve proje geliştirirken dikkat etmesi gereken konulardır. Sınıflarımızın sade ve temiz görünmesini sağlamalıyız. Çünkü tecrübeli yazılımcıların edindikleri bilgiler, projeye bittikten sonra verilen desteğe proje geliştirilmesinden daha çok enerji harcandığı yönündedir. Geliştirdiğiniz projenin bakımını da büyük bir ihtimalle siz yapacağınız için, geliştirme esnasında Design Patterns ve Clean Code konularına dikkat etmenizde fayda var diye düşünüyorum.

     Projenin geliştirilmesi devam ederken veya bittiğinde önceden yazmış olduğumuz bazı metotlarda değişiklikler yapmamız gerekebilir. Metotlar artık ilk yazdığımız hallerinde değildir bir çok bağımlılıkları oluşmuştur. Bu nedenle değişiklik yaptıktan sonra bu metot yine aynı şekilde çalışıyor mu veya bağımlılık yarattığı metotlar, ilgili metodumuzun yeni haliyle düzgün bir şekilde çalışıyor mu sorularını kendimize sormamız gerekmektedir. Sizden sonra gelecek, projenin geliştirmesini ve bakımını üstlenecek meslektaşlarınız metotların ne yaptığını girdisinin ne çıktısının ne olduğunu anlayabilecek mi? İşte tamda bu sebeplerden, yazdığımızı metotların testlerini de yazmamız gerekmektedir. Test Driven Development (TDD) metodolojisi ve hatta Behaivour Driven Development (BDD) metodolojisi aklımızın bir köşesinde bulunsun.

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama konuya başlarken bahsettiğim Kalıtım (Inheritance), Soyutlama (Abstraction), Kapsülleme (Encapsulation) ve Çok Biçimlilik (Polymorphism) kavramlarından oluşmaktadır. Bu konu başlığında bu yapılarda kısaca bahsedip, ufak örneklerle konunun anlaşılmasını sağlayacağım ve kodlamaya kavramlardan detaylı bahsettiğim konularda başlayacağım.

Kalıtım (Inheritance)

Aslında yazılım veya teknolojik olarak düşünmeden sadece günlük hayatta duyduğumuz kalıtım sözcüğünün tam karşılığı yazılımda nesne yönelimli programlamada da mevcut. Gerçek hayatta nasıl canlı -> hayvan -> kuş -> güvercin gibi genelden özele inebiliyorsak, aynı şekilde yazılımda da bu bahsettiğim kavramları birer nesne gibi düşünerek oluşturabiliriz. Şimdi iki örnek oluşturalım;

Araba -> Volkswagen -> Binek -> Jetta
Araba -> Ford -> Ticari -> Ranger

Şimdi bu örneği kalıtım olarak cümlede oturtalım, aslında Jetta, volkswagen marka binek bir arabadır. Aynı şekilde Ranger, Ford marka ticari bir arabadır. Jetta’nın ve Ranger’ın ortak özellikleri olduğu gibi birbirlerinden farklı özellikleri de mevcuttur. Yine aynı şekilde binek ve ticari araçların aynı özellikleri olduğu gibi farklı özellikleri de mevcuttur.

Java dilinde Kalıtım sağlanırken “extends” anahtar kelimesi kullanılmaktadır.

public class BinekAraba extends Araba { }

Bu örnekte BinekAraba sınıfından oluşturulacak nesne Araba sınıfı içindeki tüm özelliklere ulaşma hakkına sahiptir.

Soyutlama (Abstraction)

Soyutlama konusunu en iyi örnek vererek anlatabilirim. Şöyle ki;

Kullandığımız arabaların içerisindeki mekanik yapının nasıl çalıştığını bilmemize gerek yoktur, motor benzini nasıl alıyor nasıl yakıyor, oluşan enerjiyi tekerleri döndürmek için nasıl kullanıyor gibi konular arabayı kullanan kişiyi ilgilendirmez. Bu durum yazılım içinde geçerlidir. Kullandığımız bizim tarafımızdan yazılmamış tüm sınıfların içerisinde işlemlerin nasıl yapıldığını bilmemize gerek yoktur. Bir araba sınıfı olduğunu düşünelim, araba sınıfı marşa basıldığında arabayı çalıştıracak bir metoda ve bunun yanında anlık benzin veya motorin tüketimi hesaplayan bir metoda sahip. Biz Araba sınıfını kullanan bir kullanıcı olarak marşa basıldığında arabayı çalıştıran metodun ne yaptığıyla veya araba çalışırken benzin veya motorin tüketiminin nasıl hesaplandığıyla değil de sonuçlarıyla ilgileniyor olmalıyız.

Kapsülleme (Encapsulation)

Oluşturduğumuz bir sınıftaki değişkenlerin setter ve getter metotları kullanılarak ve bu setter ve getter metotlarına erişim belirleyicilerle belli sınıflardan erişim sağlanmasına izin vermek belli sınıflardan erişim sağlanmasına izin vermemek gibi kontroller Kapsülleme ile mümkündür. Kapsülleme yazılımcıya oluşturduğu sınıftaki değişkenlerin erişimlerini kontrol yetkisi verir. Aslında bu konuya bir önceki Erişim Belirleyiciler dersimizde detaylı bir şekilde anlattım. Dersteki örnekte Şoför belli işleri yapabiliyor ama yolcu daha kısıtlı şoför tarafından belirlenen işleri gerçekleştirebiliyordu.

Çok Biçimlilik (Polymorphism)

Çok Biçimliliği, ana sınıf içerisinde tanımlanan bir metodun alt sınıflarda değiştirilerek kullanılması olarak tanımlayabiliriz. Kalıtım başlığında verdiğimiz örnekte, Araba sınıfı içerisinde benzinDepoBuyuklugu nü dönen bir metot olsun. Bu metot binek ve ticari araç için farklı değerler dönerek birden fazla nesne tarafından farklı değerler şeklinde kullanılabilir, bu şekilde çok biçimlilik sağlanmış olur.

public class Araba { public double getBenzinDepoBuyuklugu() { return 50.0; } }public class BinekAraba extends Araba { @Override public double getBenzinDepoBuyuklugu() { return 60.0; } }public class TicariAraba extends Araba { @Override public double getBenzinDepoBuyuklugu() { return 100.0; } }

Sonuç

Bu derste bir çok teorik bilgi verdim, bu teorik bilgiler olmadan işlerin nasıl yürüdüğünü anlamak daha zor bir hal alabilir. Bu nedenle bahsetmiş olduğum bilgileri kafanızda canlandırarak sonraki dersleri çok daha rahat bir şekilde anlayabilirsiniz.

Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.

Tüm Temel Java Dersleri için tıklayınız..

64

nest...

oksabron ne için kullanılır patates yardımı başvurusu adana yüzme ihtisas spor kulübü izmit doğantepe satılık arsa bir örümceğin kaç bacağı vardır