Model View Controller

Bir Design Pattern olan Model View Controller ile dosyaları, sınıfları ve objeleri nasıl organize edeceğinizi öğreneceksiniz.

Mentorluk

Randevu OluşturKredi Al

Bir Design Pattern olan Model View Controller ile dosyaları, sınıfları ve objeleri nasıl organize edeceğinizi öğreneceksiniz.

MVC Nedir?

MVC, yani Model-View-Controller, Bir uygulamayı birbirine bağlı üç parçaya ayıran ve kullanıcı arayüzleri geliştirmek için yaygın olarak kullanılan bir Design Pattern’dır.

Design Pattern Nedir?

Design pattern’ler, deneyimli object oriented (obje tabanlı) yazılım geliştiricileri tarafından tasarlanmış en iyi yöntemlerin bazılarını temsil etmek için kullanılır. Bir design pattern, nesne yönelimli sistemlerde sıklıkla karşılaşılan belirli yazılımsal tasarım sorunlarını ele alır ve açıklar. Problemi, çözümü, çözümün ne zaman uygulanacağı ve sonuçlarını açıklar. Ayrıca uygulanması konusunda ipuçları ve örnekler verir. Çok amaca yönelik tasarlanmış yüzlerce design pattern vardır ve MVC de bunların en sıklıkla kullanılanlarından biridir.

Model

Model, proje içerisinde kullanılacak olan verilerinizin bulunduğu yerdir. Günlük hayattaki somut nesnelerin, yazılım ortamında modellenmesi anlamına gelir. Örneğin; bir kütüphane yazılımı geliştirmek istediğimizde kitap bilgilerinin tutulacağı bir Kitap modeline ihtiyaç duyarız. Bu modelde kitabın seri numarası, adı, yazarı ve yayınevi gibi bilgileri yer alacaktır.

Örnekler: Kullanıcı, Araba, Paylaşım (Instagram, Facebook vb.)

View

View’lar, projede bulunan arayüz elemanlarıdır. Bu bir web sayfası, masaüstü uygulaması arayüzü veya mobil uygulama tasarımı olabilir. Örneğin; UILabel, metni ekranda sunan bir arayüz elemanıdır ve kolayca yeniden kullanılabilir. Her projenin ihtiyaçlarına göre arayüz elemanları değişebilir.

Örnekler: UIButton, UIImageView, UIStackView

Controller

Projedeki tüm işlemlerin (veritabanı işlemleri, hesaplamalar, veri aktarımı v.b) yapıldığı kontrol bölümüdür. Controller ayrıca model ve view arasındaki veri akışını da kontrol eder.

Örnek Sayfalar: Profil, Ayarlar, TelefonRehberi

Model View Controller (MVC)

MVC, Günümüzde en çok kullanılan pattern’lardan biridir. Kullandığınız çoğu uygulama MVC kullanır. Geliştiriciler açısından okunması kolay kodlar yazmak ve geliştirilen yazılımın modüler bir yapıya sahip olmasını sağlamak en temel amaçlardır.

Image for post
Tüm kodlarınız iç içe, anlaşılması neredeyse imkansız.
Image for post
Kodunuzu parçalamaya başlıyorsunuz.
Image for post
En sonunda, her görevden sorumlu farklı yapılar elde ediyorsunuz.

Bir projenin MVC alt yapısına uygun olarak geliştirilmesi, ileride ona eklenecek özellikler için harcanacak zamanı azaltır ve süreci kolaylaştırır. Ayrıca ortaya çıkması muhtemel bug’ların(hata) çözümlenmesinde son derece kolaylık sağlar. Kodun farklı bölümlerinde aynı anda değişiklikler yapılmasını sağlar.

Çalışma Mantığı

Image for post

Model kısmı verilerinizin tutulduğu yerdir. Örneğin; Kullanıcı adında bir model. View kısmı verinin işlendikten sonra kullanıcıya gösterildiği arayüz elemanıdır. Örneğin; UILabel ile modelinizden gelen bir yazıyı ekranda gösterebilirsiniz. Controller ise verinin işlendiği ve model — view arasındaki iletişimin sağlandığı sayfadır. Örneğin; iOS’in Ayarlar sayfası.

Örnek bir Instagram Senaryosu

  1. Kullanıcı Instagram’da bir gönderiyi beğenme butonuna(View) tıklar. View -> Controller
  2. View’dan gelen bu istek doğrultusunda Controller ilgili Post objesinin likeCount değerini 1 arttırır. Controller -> Model
  3. Controller, güncellediği modeli Instagram sunucularına gönderir.
  4. Instagram sunucusu isteği gerçekleştirir ve Controller’a haber verir. Controller, ekrandaki butonun rengini kırmızı yapar. Controller -> View

MVC Kullanımının Avantajları

Proje geliştirme süresini kısaltır

Projedeki MVC katmanları birbirinden farklı olduğu için geliştiriciler eş zamanlı çalışabilir. Ayrıca bu katmanların bir araya gelmesi oldukça zahmetsizdir.

Yeniden kullanılabilirlik

Bir yazılım projesinde yeniden kullanılabilirlik son derece önemli bir ölçüttür. Oluşturacağınız modeller, view’lar ve controller’lar projenizin her bir noktasında yeniden kullanılabilir bir yapı oluşturur.

Performans

Özellikle Web projelerinde ViewState kavramı birçok verinin aynı anda işlenmesi ve depolanması gereken durumlarda performans kayıplarına neden olmaktadır. MVC projelerinde Viewstate kavramından kaynaklı performans kayıpları meydana gelmez.

Örnek: Instagram

Model: Kullanıcı
    
    struct Kullanici {
    var ad: String
    var soyad: String
    var yas: Int
    }
    
View: BeğenButonu
    
    class BegenButonu: UIButton {
        // Değişkenler
        var begeniSayisi = 0
        var begenenKullanici: Kullanıcı
        // Fonksiyonlar
        func gonderiyiBegen(kullanici: Kullanici) { }
    }
    
Controller: KullanıcıListesi
    
    class KullaniciListesi: UIViewController {
        // Araüz Elemanları (View)    
        @IBOutlet weak var baslikLabel: UILabel
        @IBOutlet weak var fotografImageView: UIImageView
        // Değişkenler
        var kullanici: Kullanici
        // Fonksiyonlar
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    }
    

Sıradaki

ScrollView

Cihaz ekran boyutundan daha büyük bir içeriği görüntülemek için kullanılan “Scroll View” yapısını öğreneceksiniz.

Videolar

Swift Temellerine Giriş
Swift Temellerine Giriş
Teknolojinin Dili Kodlama
Teknolojinin Dili Kodlama
Playground Temelleri
Playground Temelleri
Veri Tipleri & Sabitler ve Değişkenler
Veri Tipleri & Sabitler ve Değişkenler
Operatörler
Operatörler
Kontrol Akışı
Kontrol Akışı
Fonksiyonlar
Fonksiyonlar
String'ler
String'ler
Objeler, Metotlar ve Özellikler
Objeler, Metotlar ve Özellikler
Xcode ile Tanışın
Xcode ile Tanışın
Struct
Struct
Class
Class
Koleksiyonlar
Koleksiyonlar
Döngüler
Döngüler
Xcode
Xcode
“Build”, “Run” ve “Debug”
“Build”, “Run” ve “Debug”
Arayüz Elemanlarını Yakından Tanıyın
Arayüz Elemanlarını Yakından Tanıyın
Dokümantasyon
Dokümantasyon
“Interface Builder” Temelleri
“Interface Builder” Temelleri
"UIKit" ile Kullanıcı Arayüzüne Giriş
"UIKit" ile Kullanıcı Arayüzüne Giriş
İlk Uygulama
İlk Uygulama
Kontrol Elemanları
Kontrol Elemanları
Autolayout & Stackview
Autolayout & Stackview
Optionals
Optionals
Tip Dönüşümleri
Tip Dönüşümleri
Guard
Guard
Uygulama Hayat Döngüsü ve Veri Modelleme
Uygulama Hayat Döngüsü ve Veri Modelleme
Scope Sabit & Değişken
Scope Sabit & Değişken
Enumerations
Enumerations
Protokoller
Protokoller
Segue ve Navigation Controller
Segue ve Navigation Controller
TabbarController
TabbarController
View Controller Hayat Döngüsü
View Controller Hayat Döngüsü
Basit Akışlar Oluşturmak
Basit Akışlar Oluşturmak
Uygulama Anatomisi ve Hayat Döngüsü
Uygulama Anatomisi ve Hayat Döngüsü
Model View Controller
Model View Controller
Uygulamanızda Veri Kaydedin
Uygulamanızda Veri Kaydedin
ScrollView
ScrollView
TableView Giriş
TableView Giriş
TableView İleri
TableView İleri
Verileri Kaydetmek
Verileri Kaydetmek
System View Controllers
System View Controllers
Uygulama Geliştirin
Uygulama Geliştirin
Karmaşık Veri Girişi Ekranları Oluşturmak
Karmaşık Veri Girişi Ekranları Oluşturmak
Closures
Closures
Extensions
Extensions
Pratik Animasyonlar
Pratik Animasyonlar
İnternet ile İletişime Geçin
İnternet ile İletişime Geçin
İnternet ile Çalışmak
İnternet ile Çalışmak
JSON
JSON
Concurrency
Concurrency