Struct

Özellik ve metotlardan oluşan bir yapı (struct) kullanarak özel bir tür tanımlamayı öğrenirken verileri modellemenin önemini kavrayacaksınız.

Mentorluk

Randevu OluşturKredi Al

Double ve String değişkenleri tanımlamaktan sıkıldınız mı? “Struct” yapıları tam size göre! Bu derste Struct kullanımı ve bir nesneyi nasıl tanımlamamız gerektiğinden bahsedeceğiz. Hazırsanız başlayalım!

Struct nedir?

“Struct” yapısı, ortak birkaç özelliği olan nesnelere değişken özellikleri vermek için kullanılır. “Struct” yapısının kendisi, tanımlayacağınız kavramların en genel adıdır ve içindeki değişkenleri ise bu kavramların ortak özellikleridir.

   
    struct Ad {
        // özellikleri ve değişkenleri buraya tanımlayabilirsiniz
    }
   

Örnek olarak güneş sistemimizi ve gezegenleri düşünün. Her 8 gezegeni birbirinden ayırt eden ortak özellikleri vardır. Bu güneşe olan uzaklıkları, adları ve yarıçapları olabilir. Bu gezegenleri ayırt etmek için her birine teker teker bu özellikleri vermek yerine “gezegen” diye bir struct oluşturup her gezegene bu “struct” yapısının içinde bulunan özellikleri tanımlamak daha kolaydır.

    
    struct Gezegen {
        var ad: String
        var yaricap: Double
        var gunesUzaklik: Double
    }
    

Ne zaman kullanılmalı?

Birden fazla nesne aynı özelliklere sahipse kullanılır. Bu özellikleri teker teker yazmak yerine ortak bir “struct” yapısı tanımlayıp o “struct” yapısını her nesne için kullanabilirsiniz. Bu kodunuzun okunabilirliği açısından büyük önem taşır.

Structların Özellikleri
Struct Tanımlamak

Yukarıdaki örnekten yola çıkıp Marsı tanımlamak istediğinizi düşünün. Gezegen kavramı için bir struct oluşturduktan sonra Mars değişkeni oluşturup bu Gezegen adlı “struct” yapısının içinde olan özellikleri Mars’ın özelliklerine uygun olacak şekilde tanımlayabilirsiniz.

    
    var mars = Gezegen(ad: "Mars", yaricap: 3389.5, gunesUzaklik: 224780000)
    

Şimdi “struct” yapılarını kullanmanızın en faydalı yanlarından birini deneyelim. Bu gezegenlerden 8 tane var. Hepsine ayrı ayrı 3 tane özellik tanımlasaydık 8 x 3'ten tam olarak 24 satır kod yazmış olacaktık. Ancak “struct” yapılarını kullanınca bu 24 satırlık kod bir anda 8 satıra iner.

    
    var mars = Gezegen(ad: "Mars", yaricap: 3389.5, gunesUzaklik: 224780000)
    var jupiter = Gezegen(ad: "Jüpiter", yaricap: 69911, gunesUzaklik: 778500000)
    var dunya = Gezegen(ad: "Dünya", yaricap: 6371, gunesUzaklik: 149600000)
    var merkur = Gezegen(ad: "Merkür", yaricap: 2439.7, gunesUzaklik: 57910000)
    var venus = Gezegen(ad: "Venüs", yaricap: 6051.8, gunesUzaklik: 108200000)
    var saturn = Gezegen(ad: "Satürn", yaricap: 58232, gunesUzaklik: 1434000000)
    var uranus = Gezegen(ad: "Uranüs", yaricap: 25362, gunesUzaklik: 2871000000)
    var neptun = Gezegen(ad: "Neptün", yaricap: 24622, gunesUzaklik: 4495000000)
    

Tanımladığınız Bir Özelliğe Ulaşmak

“Struct” yapıları aynı zamanda tanımladığınız bir objenin belirli bir özelliğine ulaşmak istediğinizde işinize yarar. Mesela, Mars gezegeninin yarıçapını bilmek istiyorsunuz. Sadece bu veriyi almak için structların değişkenlere ulaşma özelliğini kullanabilirsiniz!

    
    print(mars.yaricap)
    

Belirli bir özelliğin değerini “struct” yapısını kullanarak değiştirebilirsiniz.

    
    mars.yaricap = 2398.9
    

Fonksiyonlar

“Struct” yapılarının içinde fonksiyonlar da tanımlayabilirsiniz. Örneğin Gezegen adlı “struct” yapısının içine bir tane “print” fonksiyonu tanımlayabilirsiniz.
“Struct” yapılarının içinde fonksiyon tanımlarken ve kendi özelliklerini kullanırken, “self” kodunu kullarınız. “Self”, kullanacağınız özelliklerin kendi “struct” yapısına özel olduğunu belirtir, bilgisayarınız da böyle bir özelliği nerede bulacağını anlamış olur.

    
    struct Gezegen {
        var ad: String
        var yaricap: Double
        var gunesUzaklik: Double
    
        func ozelliklerYazdir() {
            print("Gezegenimiz \(self.ad), yarıçapı \(self.yaricap) km, 
            Güneş'e uzaklığı \(self.gunesUzaklik) km.")
        }
    }
    

Gezegen adlı “struct” yapısının içinde kullanılan fonksiyonu çağırmak için değişkenlere ulaşmak için kullandığınız formu kullanabilirsiniz. Fonksiyonu Mars’a göre çağırmayı deneyin.

    
    mars.ozellikleriYazdir()
    

Bu kodu çalıştırdığınızda konsolunuzda Mars’ın özelliklerini görebileceksiniz.

Sıradaki

Class

Sınıf yapısını öğrenerek, Inheritance kavramına giriş yapacak, Struct ve Class arasındaki farkları, kullanım alanlarını keşfederek kavrayacaksınız.

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