Nesne Yönelimli Programlama (OOP) - SiberMega - Basit Yazılım ve Tasarım Eğitimleri

Popüler Yazılar

Post Top Ad

Responsive Ads Here

Post Top Ad

Responsive Ads Here

06/02/2023

Nesne Yönelimli Programlama (OOP)


Nesne Yönelimli Programlama (OOP), bir programın ya da sistemin belirli nesnelerin ve bu nesneler arasındaki ilişkilerin modellenmesine dayalı bir programlama yaklaşımıdır. OOP’nin temel amacı, gerçek hayatta bulunan nesnelerin (örneğin insan, ev, araba gibi) programlama dünyasında da benzer şekilde ifade edilebilmesini ve yönetilebilmesini sağlamaktır.

OOP temelde 4 ana kavramdan oluşur ; Encapsulation, Polymorphism Abstraction ve Inheritance.

1) ENCAPSULATION

Nesnenin özellikleri ve davranışlarının bir arada toplanmasıdır. Nesnenin dış dünyadan nasıl çalıştığı gizlenir ve sadece belirli fonksiyonlar aracılığıyla erişilebilir. Bu, nesnenin güvenliğini ve bütünlüğünü sağlar.

Örneğin bir araba nesnesi oluşturabiliriz. Bu nesne, arabayı tanımlayan özellikler (renk, model, hız vb.) ve arabayı kullanma hakkına sahip olan fonksiyonlar (gaz, fren, vites değiştirme vb.) içerebilir. Araba nesnesi, dış dünya tarafından sadece belirtilen fonksiyonlar aracılığıyla yönetilebilir. Örneğin, arabanın hızının arttırılması sadece gaz pedalına basarak mümkün olabilir.

public class Car {
private String color;
private String model;
private int speed;

public Car(String color, String model) {
this.color = color;
this.model = model;
this.speed = 0;
}

public void accelerate() {
this.speed += 10;
}

public void brake() {
this.speed -= 10;
}

public int getSpeed() {
return this.speed;
}
}

Bu kodda, Car sınıfı, arabanın rengi, modeli ve hızını tanımlayan özellikleri ve arabayı hızlandırma, yavaşlatma ve hızını okuma fonksiyonları içermektedir. Özellikler (renk, model ve hız) private olarak tanımlanmıştır ve sadece tanımlanmış fonksiyonlar aracılığıyla erişilebilir.

2)POLYMORPHISM

Birden fazla formda çalışması anlamına gelir. Aynı isimde fonksiyonların birden fazla formda tanımlanmasıdır.

Birden fazla sınıfın aynı isimli fonksiyonlarının bulunması durumunda, bu fonksiyonlar aynı isimle farklı şekillerde çalışabilir. Örneğin, birden fazla hayvan sınıfının her biri “Ses Çıkar” adında bir fonksiyon içerebilir. Her bir sınıfın fonksiyonu, kendi özgün hayvan sesini çıkarabilir.

abstract class Animal {
abstract void makeSound();
}

class Dog extends Animal {
void makeSound() {
System.out.println("Hav Hav");
}
}

class Cat extends Animal {
void makeSound() {
System.out.println("Miyav Miyav");
}
}

Bu kodda, Animal sınıfı makeSound() adında bir abstract fonksiyon tanımlar. Dog ve Cat sınıfları, bu fonksiyonu override ederek kendi özgün hayvan seslerini çıkarırlar.

3)ABSTRACTION

Sadece nesnenin gerekli olan özelliklerinin ve davranışlarının belirlenmesi anlamına gelir. Nesnenin nasıl çalıştığı veya nasıl gerçekleştirildiği gizlenir.

Örneğin bir araba nesnesinde, sürücün arabayı nasıl çalıştırdığının veya arabanın nasıl hareket ettiğinin bilgisini bilmesi gerekmez. Sürücü, sadece gaz pedalına basması, fren pedalına basması ve vites değiştirmesi gerektiğinde gereken yöntemleri kullanması gerekir. Bu, arabanın iç yapısının nasıl çalıştığının veya nasıl hareket ettiğinin gizlenmesi anlamına gelir.

abstract class Vehicle {
abstract void startEngine();
abstract void stopEngine();
}

class Car extends Vehicle {
void startEngine() {
System.out.println("Car engine started");
}

void stopEngine() {
System.out.println("Car engine stopped");
}
}

Vehicle sınıfı, motorun başlatılması ve durdurulması için abstract fonksiyonlar tanımlar. Car sınıfı, bu fonksiyonları override ederek kendi özgün motor başlatma ve durdurma işlemlerini tanımlar. Böylece, herhangi bir araba nesnesinin motorunun nasıl başlatılıp durdurulduğu bilinir, ancak bu işlemlerin nasıl gerçekleştiği bilinmez.

4) INHERITANCE

Inheritance, bir sınıfın (base class, superclass) başka bir sınıfa (derived class, subclass) geçirilmesini sağlar. Derived sınıf, base sınıftaki tüm özellikleri (alanlar, metodlar) ve fonksiyonları kalıtır. Ayrıca, kendine özgü ekstra özellikler ve fonksiyonlar ekleyebilir veya mevcut özellikleri override edebilir.

class Shape {
int width, height;

public void setWidth(int width) {
this.width = width;
}

public void setHeight(int height) {
this.height = height;
}
}

class Rectangle extends Shape {
public int getArea() {
return width * height;
}
}

Bu örnekte, Shape sınıfı width ve height özelliklerini ve onları ayarlamak için fonksiyonları tanımlar. Rectangle sınıfı ise Shape sınıfından miras alır ve getArea() fonksiyonunu ekler. Bu metod, dikdörtgenin alanını hesaplamak için width ve height değerlerini kullanır. Böylece, Rectangle sınıfı Shape sınıfından kalıtım alarak, inherit edilerek width ve height değerlerini kullanma ve getArea() fonksiyonunu kullanma imkanına sahip olur.

Bu dört temel başlık, Nesne Yönelimli Programlama’nın en önemli özellikleridir ve bu özelliklerin tümü bir arada kullanıldığında, programların daha organize, okunabilir ve yönetilebilir hale gelmesini sağlar.

Hiç yorum yok:

Yorum Gönder

Görüş ve Düşüncelerinizi Bizimle Paylaşmayı Unutmayın.

Post Top Ad

Responsive Ads Here