Object Oriented Programming -OOP- Nedir ? C#& Java ile Incelemeler — [0]

Turgutalp Tug
HardwareAndro
Published in
3 min readDec 16, 2021

Merhabalar, OOP (Object Oriented Programming) paradigmasini ve yapi taslarini elimden geldigince, kendi tarzimda aciklayip bir seri olusturmayi planliyorum. Temel Prensipleri aciklarken aralara girip bazi mekanizmalara da deginmeye calisacagim.Orneklendirmelerde C# & Java programlama dilini kullanacagim ama bunun butunluk acisindan pek bir onemi yok OOP paradigmasini mantik olarak kavramak onemli.

Bizim icin incelenmesi gereken bes ana bilesendir.Bu bilesenlerin derinliklerine dalmadan once teorik olarak OOP paradigmasina, kazandirdiklarina, dezavantajlarina ve alternatiflerine cevap arayalim…

Sorular / Cevaplar:

  • OOP nedir ? =>

Insan zihni modellemeyi sever, yazilim dunyasini nesneler(objects) uzerinden soyutlayarak modelledigimiz bir programlama paradigmasidir.Soyutlamak(abstraction) bu tanimin en can alicisi noktasidir, geri kalan butun seruvenimizin anlamli hale gelmesi soyutlamanin yazilim icin onemini anlamaktan geciyor.Peki soyutlamaktan kastimiz nedir?=>>>Bir harita dusunun… Soyutlamayi en iyi anlatan ornegin bu oldugunu dusunuyorum.Mesela dogalgaz rezervlerini gosteren bir harita, yada bulundugunuz sehirin elektronik magazalarini gosteren bir harita.Amaclari disinda geri kalan her seyi soyutlayarak sadece istedigimiz gercekligi bize sunarlar.Soyutlama bir seyin “ne” oldugu ile ilgilenir, “nasil” oldugunu gormezden gelir => Kahve icmek icin kahve cekirdeginin nasil ogutuldugunu bilmeniz gerekmez.Klasik ornek olarak, araba kullanmak icin motorun nasil calistigini bilmemize gerek yoktur.Ilerleyen kisimda object(nesne)-class(sinif)iliskisine atifta bulunacagiz ve bu soyutlamanin nasil gerceklestigini daha iyi anlayacagiz.

  • OOP paradigmasindan baska paradigmalar var mi ? =>

Bu cok uzun ve detayli bir konu ama yanit olarak evet diyebiliriz.Incelemek icin kaynak

  • OOP yaklasiminin avantajlari ve dezavantajlari nelerdir? =>

Avantajlarindan bahsedelim, yeri geldikce bu ornekleri cogaltacagiz.

“ Extensibility, Modularity,Reusability ” bu kavramlari profesyonel hayatimizda sikca duyacagiz.Bunlarin disinda Scalable,Testable,Flexible gibi bir cok avantaji vardir yeri geldiginde hepsine atifta bulunacagiz.

Extensibility(Genisletilebirlik):

Aslinda genisletilebilirlik OOP ile ilgili degildir, mevcut yazilimin minimum direncle genisletilebilme yetenegidir.Extensibility bir sistemde , sistemin ic yapisi ve data minimum duzeyde etkilenmeli veya hic etkilenmemelidir.Yazilim sistemleri tasarlanirken uzun sureli kullanim goz onune alarak tasarlanir,eklenecek yeni ozellikler veya dogacak yeni ihtiyaclara hizli tepki verebilmek icin extensibility biz gelistiricilerin sisteme yeni moduller eklemesine imkan tanir ve yeniden kullanilabilirlik(reusability) ozelligi saglar.

Modularity(Modulerlik):

Yazilim gelistirime sureclerinde karmasiklik kontrol altina alinmasi gereken en onemli kavramdir.Modularity bize bu karmasikligi yonetebilme imkani saglar.Kelimenin kokeni “modul”’den gelir. Bir bilgisayar dusenelim cpu,gpu,ram,screen,keyboard… hepsi birer moduldur.Bizde gelistirdigimiz sistemi soyutlayarak modullere ayiririz ve yazdigimiz kodun karmasikligini azaltip kodun bakim maliyetini dusurmeyi hedefleriz.Ornekte cpu: veriyi isleyen birimdir, soyutlamasi bu islemle sinirlandirilmistir.Diger moduller bir araya gelerek butunu yani bilgisari olusturur.Veri isleme islemlerinde bir sorun oldugunda nereye bakmamiz gerektigini biliriz, bakim maliyetide buna benzetilebilir.

Reusability(Yeniden Kullanilabilirlik):

Kodun yeniden kullanilabilir olmasidir.Inheritance konusunu incelerken buraya atifta bulunacagiz.Reusability OOP paradigmasinda cesitli sekillerde saglanabilir.(Encapsulation,Inheritance,Composition) Encapsulation ve Inheritance bizim inceleyecegimiz konular oldugu icin burada es gecmek istiyorum.Composition kavramini biraz aciklamak istiyorum.

Composition,bir sınıfın başka bir sınıfın nesne örneğini içermesine izin vermesidir.Hemen ornek gosterelim..En cok kullanilan ornek araba-motor ornegidir.

Her arabanin bir motoru olmasi gerek, motor araba sinifinin icerisinde tanimlanir yani onun olmazsa olmaz parcasi olur.Araba nesnesi olusturulursa motor da onunla birlikte olusur.Araba nesnesi yok edilirse motor da araba nesneni ile birlikte yok olur.Composition bize lose-couple(gevsek-bagli) bir yapi saglar cunku dedigimiz gibi motor yoksa araba bir ise yaramaz.Motor ve araba arasinda “has-a” iliskisi vardir.Inheritance konusunu aciklarken Composition ile arasindaki farklari detayli bir sekilde konusacagiz.Simdilik bu yapinin bize kodun yeniden kullanilmasina imkan verdigini bilelim.

Dezavantajlarini inceleyecek olursak:

Prosedurel programlama paradigmasina gore daha fazla kod icerir bu da boyutunun buyuk olmasi demektir.Boyut buyudugu icin hiz azalir.Yine konunun devaminda ornekler verecegiz.Son olarak OOP her sorunu cozmez belki karsilastigimiz problemi cozmek icin OOP cok kompleks yada yetersiz gelebilir.Problem analizinin iyi yapilip ona gore bir paradigma tercih edilmelidir.

Evet, Nesne Yonelimli Programlama hakkinda on bilgimizin olustudugunu dusunuyorum.Konuya bu basliktan devam edip okunmasini zorlastirmak istemiyorum.Bende OOP yazi serimi modullere ayirarak modularity uygulamak istedim :)

Sirasiyla:

1- Class & Object Architecture

2- Encapsulation

3-Inheritance

4-Abstraction

5-Polymorphism

Yazilarini inceleyebilirsiniz… Bazi ek kaynaklari assagida paylasmaya calistim butun yazilarima bu kaynaklari esit bolerek paylasmaya devam edecegim.Vakit ayirdiginiz icin tesekkur ederim.Calismaya Devam 🚀

Ek Okumalar ve Kaynaklar :

Reusability 1

Reusability 2

Video Ders

FolksDev

Tarik Guney

Gokhan Ayrancioglu

--

--