Photo by Daniel Tong on Unsplash

JS ILE FONKSIYONEL PROGRAMLAMA

Object-Oriented Programlamanın Unutulmuş Tarihi — 3

Onur Dayıbaşı
Frontend Development With JS
4 min readMay 22, 2021

--

Bu yazıyı daha önceden yazmış olduğum Object-Oriented Programlamanın Unutulmuş Tarihi-1 ve. Tarihi-2 yazılarının devamıdır.

Object-Oriented Programlamanın Özü

Message Passing ve Encapsulation birleşimi bazı önemli amaçlara hizmet eder.

Not: Aslında burdaki yazılım içerisindeki programdaki Nesneler ve İletişim kavramları daha büyük ölçekte Yazılım Mimarisinde bahsettiğimiz Integration Örüntülerinin’de temelini oluşturan konular. Her ne kadar programlamayı önceden Monolitik yapıda düşünüyor olsakta günümüzde bu sistemler dağıtık , microservice mimari yapısında çalışır bir hale gelmiş oldu. Microservice ve Monolitik kavramlarına yabancı olaran Microservis Nedir ?yazımı okuyabilirler.

Tekrar yazıya dönersek Message Passing ve Encapsulation önemli amaçlar neydi ?

1. Avoiding Shared Mutable State (Paylaşılmış State Kullanma)

Bileşenlerin içerisinde kapsadıkları state(durumları) dışarıdaki diğer objelerden izole et. Obje içerisindeki state değişimi için sadece diğer objeler mesaj yoluyla istekte bulunabilsinler. Emir vermesinler. State değişimleri local, hücresel seviyede kontrol edilsin, global erişim ve paylaşım yerine..

Not : Burada istekte bulunsunlar emir vermesinler çok önemli bir kavram, yani istekte bulunan, istekte bulunduğu objenin iç state bilMesin..).

Bu kısmın daha iyi anlaşılması için React’ın bileşen yapısından örnek vermek istiyorum. React bileşenlerinin bir internal state birde dışarıdan aldığı props mekanizması bulunur.

Props üzerinden bilgi alır veya bilgi sorar veya dışarıya bir etkide bulunur. Bu konuda daha detaylı bilgi sahibi olmak için React Bileşenlerinde State ve Props yazısını okumanızı öneririm.

Internal State ve Props Kavramı…

2. Decoupling (Ayrışma)

Objeleri birbirinden ayrıştırma — Message API üzerinden mesaj gönderimi ve alımı yöntemleri ile Objelerin haberleşmesi.

Not: Burda 1nci madde ve 2nci Madde için şöyle bir sitemde de bulunabilirsiniz. Böyle bileşenler birbirinden tamamı ile bağımsız ve mesajlaşma sistemi üzerinden kendi state yönettiği kurumsal yazılımlar, büyük ölçekli yazılımlar geliştirmek mümkün mü ?

Gerçek dünyadan ve gerçek React App örnek vermek gerekirse. Veri Tabanında veya başka bir API üzerinden aldığınız Entity , uygulamanızda ki UI birebir eşleşmiyor. Yani UI bileşenlerinin kendi internal state olmasına karşın bir Entity birden fazla UI tüketiyor ve değiştiriyor ise;

  • Bu yapıları nasıl kuracağız ?
  • Genel uygulama state nasıl tutulacak?
  • Bu yapı gerçek hayatta çalışır mı şeklinde sorular olabilir.

Bu konuda React Bileşen yapısı ve bunların büyük uygulamalar dalki kullanımlarından yani State Management yaklaşımlarından bahsetmek istiyorum. Bunun için Redux veya GraphQL Apollo gibi kütüphaneler ile bu durumları çözmeye çalışıyorlar.

Örneğin Redux’ta ;

ve bu işlemleri bir mesajlaşma yapısı ve state üzerinden kontrol etme mekaniği var.

Redux nasıl bir yapı ve çalışıyor diye daha fazla bilgi sahibi olmak için aşağıdaki yazıları okumanızı öneririm.

Örneğin Apollo GraphQL de;

https://www.apollographql.com/blog/frontend/mutations-and-optimistic-ui-in-apollo-client-517eacee8fb0/

3. Adaptability and Resilience to Changes (Değişikliklere Adaptasyon ve Dayanıklılık)

Late-Binding, Dynamic Binding yöntemleri ile bileşenlerin uygulamaya runtime da(kod işletilirken) bağlanabilir mekanizmalara sahip olması Alan Kay’ın OOP için gerekli olduğunu düşündüğü birçok büyük fayda sağlar.

Not: JavaScript dinamik bir dil bileşenlerin Runtime bağlayabilecek bir altyapısı bulunuyor. Bu konuyu daha sonra detaylı bir örnek ile açıklayacağım.

Alan Kay bu fikirleri biyolojideki hücrelerden ve network üzerindeki bireysel bilgisayarların iletişiminden etkilenerek ortaya atmıştır.

Alan Kay, bu kadar erken bir tarihte bile, bilgisayarların biyolojik hücreler gibi davrandığı, kendi yalıtılmış durumlarında bağımsız olarak çalıştığı ve mesaj iletimi yoluyla iletişim kurduğu dev, dağıtık bir bilgisayarda (internet) çalışan bir yazılım olarak hayal etmiştir. (Not: Günümüz Microservis ve Serverless Mimarisini ile sanki o hayalleri gerçekliğe kavuşmuş gibi 😃)

“I realized that the cell/whole-computer metaphor would get rid of data[…]”
~ Alan Kay

Referanslar

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--