Nesne Yönelimli Programlama (Object Oriented Programming) Dersleri — 12 Saat Video

Prof. Dr. Deniz Kılınç
3 min readDec 29, 2019

Nesne Yönelimli Programlama (Object Oriented Programming)

Photo by Tobias Cornille on Unsplash

İzmir Bakırçay Üniversite Bilgisayar Mühendisliğinde BİL 201.Nesne Yönelimli Programlama dersinde anlattığım ders videolarını tek bir kaynakta toparlamak ve bu özgün içerikten isteyen herkesin yararlanabilmesi için bu yazı yazmaya karar verdim. Umarım herkes için faydalı olur…

Konuları anlatırken neye dikkat ettim?

  • Bol uygulama yapmaya
  • Clean Code anlatmaya
  • SOLID tasarım prensiplerine giriş yapmaya

Kısa Giriş: “Nesne Yönelimli Programlama Nedir?”

Nesne yönelimli programlama (NYP), nesneyi merkezine alan bir programlama yaklaşımıdır/paradigmasıdır. Nesneye yönelik programlama ya da nesne merkezli programlama gibi Türkçe karşılıkları ve kullanımları mevcuttur. Nesne yönelimli programlama terminolojisindeki “object/nesne” ve “oriented/yönelimli” kavramları ilk olarak 1966 veya 1967 yılında NYP’nin babası olarak bilinen Alan Kay tarafından kullanılmıştır. NYP paradigmasının bazı özelliklerini destekleyen ilk programlama dili olan Simula’dan sonra, Alan Kay, Dan Ingalls, Adele Goldberg ve arkadaşları tarafından NYP paradigmasını tam destekleyen programlama dili Smalltalk’ın ilk versiyonu 1969–1972 yılları arasında Xerox PARC’ta geliştirilmiştir.

NYP paradigmasında dünyadaki herhangi bir şeyi bir nesne olarak düşünmek hem basittir hem de doğal hayatın akışına uygun bir yaklaşımdır. Dolayısıyla NYP’nin yordamsal programlama yaklaşımının genişletilmiş ve gerçeğe çok daha yakın bir versiyonu olduğunu söylemek mümkündür. Değişkenler ve fonksiyonlar (metotlar) bu yaklaşımda da kullanılır fakat burada ana odak noktası nesnelerdir.

Yordamsal programlamadaki büyük ve karmaşık sistemleri tasarlamak yerine, birbiriyle iletişim ve etkileşim halinde nesnelerin olduğu bir dünya kolayca tasarlanabilir. NYP paradigmasını destekleyen bir dilin aşağıdaki dört özelliğe sahip olması gerekmektedir. Bu özelliklerin tanımlarını yapmadan önce Sınıf ve Nesne kavramlarının tanımlanması ve içselleştirilmesi gerekmektedir.

  1. Soyutlama (Abstraction)
  2. Sarmalama/Paketleme (Encapsulation)
  3. Kalıtım/Miras (Inheritance)
  4. Çok biçimlilik (Polymorphism)

Dikkat: Nesne Yönelimli Programlama yanlış bir tasarımla KARMAŞIKLIĞI arttırabilir.

Reçete:

  1. Her zaman Temiz Kodlama (Clean Code) tarafında kalmalıyız.
  2. Tasarım Prensiplerinden (Design Principles) ve Tasarım Kalıplarından (Design Patterns) uzaklaşmamalıyız.

1. Video İçerikleri ve Linkler

1.1. Visual Studio, .NET ve C# Programlama Diline Giriş

  • Programlama Dilleri ve Paradigmalar
  • C# ve Java Farkları
  • Net Uygulama Geliştirme Platformu
  • Visual Studio IDE ile Form Yaratma
  • Toolbox Kullanarak Buton ekleme
  • Form yaratma, Forma Label ve TextBoxt ekleme
  • Adlandırma Yöntemleri ve Düzenleme
  • Sabitler, Değişkenler, Tip Dönüşümü, Operatörler, Döngüler
  • Sıfırdan versiyonlama yaparak bir örnek çözme

1.2. C# Basit Veritabanı Operasyonu

  • Ne alaka diye aklınıza gelebilir? Bazen sonucu başta görmek, motive edici olabilir :)

1.3. Nesneye Yönelik Programlamaya Giriş

  • Soyutlama, Saklama
  • Nesneye Yönelik Programlamanın Farklılıkları
  • Nesne Kavramı
  • Sınıf Kavramı
  • Sınıf Oluşturulması
  • Sınıflar Arası İlişki (Association, Aggregation, Composition)
  • SOLID tasarım prensiplerine ve Clean Code’a kısa giriş

1.4. Sınıflar, Nesneler, Davranışlar ve Özellikler

  • Sınıflardan Nesne Yaratma
  • Metotlara Nesne Aktarımı
  • Properties (Özellikler) Yaratma
  • Properties Kullanma
  • Auto-Implemented Properties

1.5. Kurucu Metotlar (Constructors)

  • this referansı
  • Yapıcılar/Kurucular/Kurucu metotlar (Constructors)
  • Kurucu metotların aşırı yüklenmesi
  • Yıkıcılar (Destructors)

1.6. Kalıtım (Inheritance)

  • Kalıtım Kavramı
  • Kalıtım Terimleri
  • Sınıfların Genişletilmesi
  • protected Erişim Belirleyicisi

1.7. Çok Biçimliliğe (Polymorphism) Giriş

  • Temel Sınıfların Metotlarını Ezme (Override)
  • Sanal Metotlar
  • Çok biçimlilik (Polymorphism)

1.8. Soyut Sınıflar (Abstract Classes)

  • Soyut Sınıfların Oluşturulması
  • Soyut Sınıfların Kullanımı

1.9. Arayüzler (Interfaces)

  • Arayüz Tanımı
  • Arayüz Örnekleri
  • Arayüz ve Soyut Sınıf Birlikte Kullanımı

Not: Yeni videolar eklendikçe makaleyi de güncelleyeceğim.

Edit v1.1: Derse ait sunumları aşağıdaki Github adresimde bulabilirsiniz.

Görüşmek üzere…

--

--

Prof. Dr. Deniz Kılınç

Professor at Bakırçay University, Industry experience in software engineering and data science for 23 years. Founder of https://kalybeai.com