0:00
Herkese selamlar. Bugün modern yazılım
0:02
geliştirmenin tam kalbine ineceğiz.
0:04
Sınavınızdan önce bilmeniz gereken en
0:06
kritik konuları hap gibi hızlıca bir
0:09
gözden geçireceğiz. Çünkü bu
0:11
ezberlenecek bir ders değil. Aksine
0:13
profesyonel bir bakış açısının kilidini
0:15
açacak bir anahtar. Hazırsanız hadi
0:18
başlayalım. Bakın amacımız çok basit.
0:21
Sınav için en can alıcı noktaları, en
0:23
temel kavramları hızlı ve net bir
0:25
şekilde anlamanızı sağlamak. Pekala,
0:27
konuya direkt dalıyoruz. Her şeyden önce
0:29
yazdığımız kodların nerede ve nasıl bir
0:32
ortamda yaşadığını yani büyük resmi bir
0:34
anlamamız lazım. Şöyle düşünün.
0:36
Günümüzde modern yazılımların hiçbiri
0:39
sıfırdan yaratılmıyor. Hepsi DNET gibi
0:41
güçlü platformlar üzerine inşa ediliyor.
0:44
Bu platformlar geliştiricilere hazır
0:46
araçlar sunarak işleri inanılmaz
0:48
kolaylaştırıyor. E hadi o zaman şimdi bu
0:51
platformun perde arkasına yani makine
0:53
dairesine inelim ve kodla veriyi nasıl
0:55
yönettiğini biraz daha yakından görelim.
0:58
Bilgisayarın belleğini iki farklı bölme
1:00
gibi düşünebiliriz. Stack küçük ve sık
1:03
kullandığımız verileri tuttuğumuz hemen
1:05
elimizin altındaki 1000 not defteri gibi
1:07
hızlı ve pratik. He ise daha büyük, daha
1:11
karmaşık nesneleri sakladığımız geniş
1:13
bir depo. Peki bu iki bölme arasında
1:16
veri nasıl hareket ediyor? İşte boxing
1:19
yani kutulama tam da bu işe yarıyor.
1:22
Hızlı erişim bölgesindeki yani stackteki
1:25
küçük bir veriyi alıp sanki bir kargo
1:27
kutusuna koyar gibi paketleyip daha
1:29
kalıcı olan depoya yani HEAP'e
1:32
gönderiyor. FCL için geliştiricilerin
1:34
İsviçre çakısı diyebiliriz. içinde her
1:37
türlü yaygın görev için hazır kodlar,
1:39
araçlar bulunan devasa bir kütüphane. Bu
1:42
sayede kimse her seferinde tekerleği
1:44
yeniden icat etmek zorunda kalmıyor.
1:47
Peki sistem bu kadar verimli olmayı
1:49
nasıl başarıyor? Cevap: Ekojit gibi
1:52
akıllı derleyiciler sayesinde. Bu
1:54
derleyici tüm programı baştan sona
1:56
hazırlamak yerine tembel ama zeki bir
1:59
çalışan gibi sadece şu anda ne lazım
2:01
diye soruyor ve sadece o an ihtiyaç
2:04
duyulan kısmı çalışmaya hazırlıyor. Bu
2:06
da müthiş bir performans artışı demek.
2:08
Evet, şimdiye kadar kodun nerede
2:11
çalıştığına baktık. Şimdi ise asıl
2:13
önemli soruya geliyoruz. nasıl
2:15
çalıştığına yani nesneye yönelik
2:17
programlamanın felsefesine. Ve unutmayın
2:20
her şey her zaman tasarım aşamasında
2:23
başlar. İşte karşınızda nesneye yönelik
2:25
programlamanın dört temel direği. Bu
2:28
dört kavramı anladığınız anda aslında
2:30
bütün felsefeyi de çözmüş oluyorsunuz.
2:32
Kapsüllemeyi anlamanın en kolay yolu bir
2:35
ilaç kapsülünü düşünmek. İçindeki etken
2:37
madde ve onu koruyan kabuk bir bütündür.
2:40
Değil mi? İşte kapsülleme de veriyi ve
2:43
onu değiştirebilecek kodu bir araya
2:46
getirip dışarıdan gelecek istenmeyen
2:48
müdahalelere karşı korur. Soyutlama ise
2:51
bir arabanın ön paneli gibidir. Siz
2:54
sadece direksiyonu, gaz pedalını ve hız
2:57
göstergesini görürsünüz. Kaputun
2:59
altındaki yüzlerce karmaşık parçanın
3:01
nasıl çalıştığını bilmek zorunda
3:03
değilsiniz. İşte soyutlama bize sadece
3:06
ihtiyacımız olanı göstererek
3:08
karmaşıklığı yönetmemizi sağlar. Kalıtım
3:10
kodun soyağacıdır. Mesela araba bir
3:13
taşıttır deriz. Bu sayede araba sınıfı
3:16
taşıt sınıfının tüm özelliklerini miras
3:18
alır. Bu da bize hem organize bir yapı
3:20
kurma hem de sürekli aynı kodları tekrar
3:23
yazmaktan kurtulma imkanı verir. Ve son
3:25
direğimiz çok biçimlilik. Bakın bu çok
3:27
eğlenceli. Eğer bir kediye ve bir köpeğe
3:30
ses çıkar komutu verirseniz ne olur?
3:33
Biri yav der diğeri hav. İşte aynı
3:35
komuta farklı nesnelerin kendi
3:38
doğalarına uygun farklı cevaplar vermesi
3:40
tam olarak çok biçimliliktir. Bir bina
3:43
inşa etmeden önce mimari bir plana
3:45
ihtiyacınız olur değil mi? İşte
3:47
yazılımda da durum farklı değil.
3:49
Geliştiriciler de kod yazmaya başlamadan
3:51
önce UML adını verdiğimiz bu planları
3:54
kullanırlar. Ve bu planların tam
3:56
merkezinde kalbinde ne var biliyor
3:58
musunuz? Teknoloji değil. Kullanıcı. İyi
4:01
bir yazılım tasarımı her zaman
4:02
kullanıcının sistemle ne yapacağını,
4:05
ondan ne beklediğini anlamakla başlar.
4:07
Hadi bakalım dikkatler toplansın. Ufak
4:09
bir test zamanı. Ekranda
4:11
gördüklerinizden hangisi standart bir
4:13
UML diyagramı olarak kabul edilmez? Bir
4:16
düşünün bakalım. Ve doğru cevap tabii ki
4:18
donanım diyagramı. Sınıf, sıra, durum
4:20
makinesi gibi diyagramlar ÜML'in temel
4:22
taşlarıdır. Ama donanım diyagramı diye
4:25
resmi standart bir YML diyagramı türü
4:27
yoktur. Bu ayrım önemli. Harika. Şimdiye
4:30
kadar konuştuğumuz tüm bu teorileri,
4:32
planları bir araya getirme zamanı. Bu
4:34
kavramların gerçek kodda nasıl hayat
4:36
bulduğuna ve tabii ki kalite dediğimiz o
4:38
sihirli kelimeye nasıl bağlandığına
4:40
bakalım. Programlamaya iki farklı
4:42
yaklaşım var. Emirsel yaklaşım bir yemek
4:44
tarifi verir gibi bilgisayara her adımı
4:46
tek tek nasıl yapacağını söylemektir.
4:49
Bildirimsel yaklaşım ise bir restoranta
4:51
sipariş verir gibi sadece ne
4:54
istediğinizi söylemektir. Gerisini
4:55
sisteme bırakırsınız. Teknik olarak her
4:58
şey mükemmel olabilir. Kod tıkır tıkır
5:00
çalışıyordur. Ama bu yazılımın iyi
5:02
olduğu anlamına gelir mi? Asıl soru bu.
5:05
Bir yazılımı gerçekten kaliteli yapan
5:07
şey nedir? İşte cevap burada yatıyor.
5:10
Kalite kime sorduğunuza göre değişir.
5:12
Bir kullanıcı için kalite, hız,
5:15
güvenlik, kullanım kolaylığı demektir.
5:17
Ama bir geliştirici için kalite yazdığı
5:20
kodun ne kadar temiz, ne kadar tekrar
5:22
kullanılabilir olduğudur. İki tarafın
5:24
öncelikleri farklıdır. Evet. Yazılımın
5:27
temel kurallarını, yapı taşlarını hep
5:29
birlikte gördük. Artık bu bilgiler
5:31
elinizde. Şimdi asıl soru şu: Bu
5:34
kuralları sadece bir sınavı geçmek için
5:36
mi kullanacaksınız yoksa onlarla yeni
5:39
bir şeyler inşa etmek için mi? Seçim