Ata Aöf Görsel Programlama-2 2024-2025 Final Soruları
https://lolonolo.com
Show More Show Less View Video Transcript
0:00
Merhaba. Görsel programlama 2 konularını
0:02
derinlemesini inceleyeceğimiz bu harika
0:04
özet çalışmaya hoş geldiniz. Biliyorum
0:06
sınav konuları bazen göz korkutucu
0:08
olabiliyor ama inanın bana bugün o
0:10
karmaşık gibi görünen kavramları sadece
0:12
ezberleyip geçmeyeceğiz. Hayır. Tam
0:14
aksine adım adım, tıkır tıkır çalışan
0:17
harika bir yazılım geliştirme döngüsü
0:19
inşa edeceğiz. Hazırsanız başlayalım.
0:22
Şimdi size çok net bir soru soracağım.
0:24
Görsel programlama 2 finaline gerçekten
0:26
ne kadar hazırsınız? Hım. Eğer biraz
0:29
bile tereddünüz varsa hiç
0:31
endişelenmeyin. Bugün sizin çalışma
0:33
arkadaşınızım. Sınavdaki o zorlu
0:35
kavramları zihnimize adeta kazmak için
0:37
sıfırdan varsayımsal bir C#ARP
0:39
uygulamasını beraber ayağa kaldıracağız.
0:42
Bilgileri öyle bir oturtacağız ki o
0:44
sınav kağıdını önünüze aldığınızda
0:45
cevaplar resmen gözünüzde canlanacak.
0:48
Hadi hemen konuya dalalım. Rotamız çok
0:50
net. Önce C#ARP temelleri ve hata
0:53
ayıklama. Ardından GDI artı ile görsel
0:56
çizimler. Sonra veri tabanı ve ADONET,
0:59
XML ve güvenlik altyapısı ve son olarak
1:01
da raporlama ve kurulum işlemleri. Bakın
1:04
bu adımlar sadece sınav konuları değil
1:07
aslında gerçek dünyadaki profesyonel bir
1:09
yazılım geliştirme döngüsünün tam da
1:11
kendisi. Birinci aşama C#ARP temelleri
1:14
ve hata ayıklama. Projemizin temelini
1:17
burada atıyoruz. Yani kodumuzu yazıp
1:19
arka plandaki ana mantığın sorunsuz
1:21
çalıştığından emin olacağız. Tamam.
1:23
Kodumuzu yazarken kavramamız gereken ilk
1:26
ve belki de en kritik şey şu: Metot
1:28
imzası. Nesne yönelimli programlamanın
1:31
adeta kalbidir bu. Şöyle düşünün. Bu
1:33
imza bir metodun parmak izidir. Sadece
1:36
metodun adıyla bitmiyor iş. Metodun adı,
1:38
aldığı parametrelerin tipi ve sayısının
1:41
o mükemmel kombinasyonu. İşte imza
1:43
budur. Derleyicinin aynı isme sahip ama
1:46
farklı işler yapan o aşırı yüklenmiş
1:48
metotları birbirine karıştırmamasını
1:50
sağlayan yegane kimlik kartı kesinlikle
1:52
bu metot imzasıdır. Şimdi bir
1:54
geliştiricinin alet çantasındaki en
1:57
favori üç araca yakından bakalım. İlk
1:59
olarak reverse metodu. Bu araç
2:01
dizilerdeki eleman indekslemesini
2:03
tamamen ama tamamen tersine çevirir.
2:06
İkinci sırada exp var. Matematik
2:09
kütüphanesinden çağırdığımız bu metot
2:11
meşhur oer sayısı olan e sabitinin
2:13
kuvvetini hesaplıyor. Ve geldik
2:15
favorime. Metin işlemlerinin gerçek
2:17
kahramanı replace. Replace metodunu uzun
2:21
bir metin içindeki eski kelimeleri
2:23
saniyeler içinde yeni kelimelerle
2:25
değiştiren sihirli bir silgi gibi
2:26
düşünebilirsiniz. gerçekten hayat
2:29
kurtarıyor. Kodlamaya devam ederken asla
2:31
unutmamamız gereken iki altın kural var.
2:33
Birincisi dis anahtar kelimesi. Bazen
2:36
yerel değişkenlerle sınıfın genel yani
2:38
küresel değişkenlerin isimleri aynı
2:40
olabilir, değil mi? İşte bu isimler
2:42
çakıştığında sınıf kendi global
2:44
değişkenine disyerek sahip çıkar. Bir
2:47
nevi bu benim der. İkinci kuralımız ise
2:49
içe geçmiş isim uzaylarıyla yani nam
2:52
space'lerle ilgili alt uzaylara ulaşmak
2:54
için nokta notasyonu kullanıyoruz.
2:56
Burada dikkatinizi çekmek istediğim çok
2:58
ufak bir detay var. Bakın, üniversite
3:00
kelimesi biraz tuhaf yazılmış, değil mi?
3:02
Bunu bilerek böyle bıraktım. Çünkü sınav
3:04
kitapçığındaki tam doğru yanıt tam da bu
3:06
dizgi hatasıyla yer alıyor. Sınavda
3:08
karşınıza çıktığında, "Ha, çalışma
3:10
arkadaşım bundan bahsetmişti." deyip bu
3:12
seçeneği hemen işaretleyeceksiniz. Peki
3:14
işler her zaman yolunda gider mi? Hayır.
3:17
Kodumuz bazen tökez dediğinde yazılımın
3:19
beyninin içine tam anlamıyla
3:20
sızabilmeliyiz ve bu noktada harika bir
3:23
aracımız var. Birinci adım kod satırına
3:25
bir breakp yani kesme noktası ekliyoruz.
3:28
Bu sisteme hey burada dur ve bekle
3:30
demektir. Yürütme durakladığında ikinci
3:32
adıma geçiyoruz ve watch yani izleme
3:35
penceresini açıyoruz. Böylece bellek
3:37
üzerinde o an hangi değişkenin hangi
3:39
değere sahip olduğunu anlık ve dinamik
3:41
olarak izleyebiliyoruz. Kesinlikle
3:43
harika bir güç. İkinci bölüme geldik.
3:45
GDI artı ile görsel çizimler. Arka
3:49
plandaki kodumuz süper çalışıyor ama
3:51
dürüst olalım. Uygulamamızın kullanıcıya
3:53
görünen o ön yüzü de en az kod kadar şık
3:56
olmalı değil mi? Şimdi arayüzü
3:58
tasarlarken içi tamamen dolu cap canlı
4:01
şekiller çizmek istiyoruz. Bunun için
4:03
solid brush sınıfını kullanıyoruz.
4:05
Adından da anlaşıldığı gibi katı düz
4:08
renkli bir fırça bu. Ama durun bir
4:09
saniye. Elinizde bir renk olmadan
4:12
fırçayı tuvale sürebilir misiniz? Yani
4:14
mantıken hayır. İşte tam da bu fiziksel
4:17
gerçeklikten dolayı Solid Brush
4:19
sınıfının kurucu metodu sizden mutlaka
4:21
ama mutlaka bir color yani renk
4:23
parametresi talep eder. Renk yoksa fırça
4:26
da yok. Peki neleri boyayabiliriz?
4:28
Geçerli fiil yani doldurma metotlarına
4:31
şöyle bir bakalım. Dikdörtgenler,
4:33
elipsler, kapalı eğriler. Bunların
4:35
hepsinin ortak noktası ne? Hepsi
4:38
sınırları belli, tamamen kapalı
4:40
geometrik şekiller. Ancak iş geçersiz
4:42
bir metot olan fil arka geldiğinde işte
4:45
orada işler değişiyor. Ark yani bir yay
4:48
parçası doğası gereği başı ve sonu asla
4:50
birleşmeyen açık bir çizgidir. Uçları
4:53
açık bir bardağın içine su doldurmaya
4:55
çalışırsanız ne olur? Su akar gider
4:57
değil mi? Mantıksal ve fiziksel olarak
4:59
açık bir eğriyi dolduramazsınız. İşte bu
5:02
basit gerçeklikten dolayı GDI Plus
5:04
kütüphanesinde fil arc diye bir metot
5:07
kesinlikle hiçbir şekilde var olamaz.
5:09
Kullanıcı arayüzümüzü tasarladık. Harika
5:11
görünüyor. Şimdi 3üncü aşamaya yani veri
5:14
tabanı ve a donate kısmına geçiyoruz.
5:16
Sonuçta bu uygulamanın kullanıcı
5:17
verilerini bir yerlerde güvenle
5:19
depolaması ve gerektiğinde geri
5:20
çağırması gerekecek. Uygulamamıza bir
5:22
veri tabanı seçerken önümüzde harika
5:24
mimariler var. İlişkisel, no SQL,
5:27
dağıtılmış veya bulut veri tabanları.
5:29
Bunların hepsi sektörde canavar gibi
5:31
çalışan geçerli sistemler. Ama şu no
5:34
text ibaresine dikkatli bakın. Üzerini
5:37
çizdik. Çünkü yazılım dünyasında böyle
5:39
bir mimari yok. Sınavlarda bazen böyle
5:41
tamamen uydurulmuş, kulağa havalı gelen
5:43
kelime oyunları yaparlar. Sakın ama
5:45
sakın bu nox tuzağına düşmeyin. Diyelim
5:48
ki veriyi aldık. Peki program çalışırken
5:50
biz bunu bellekte nerede tutacağız? İşte
5:52
burada sahneye ADNET mimarisinin
5:55
süperstarı çıkıyor. Dataset. Dat seti
5:58
bilgisayarınızın RAM'inde yaşayan geçici
6:00
sanal bir veri tabanı gibi düşünün. Çok
6:02
net bir kural vardır. Gerçek bir veri
6:04
tabanının içinde ne yaşıyorsa bu sanal
6:06
yansımasında da o yaşamak zorundadır.
6:09
Peki bir veri tabanının kalbi nedir?
6:11
Tabii ki tablolarıdır. Hal böyle olunca
6:13
datasetin içindeki en hayati, en
6:15
vazgeçilmez nesne koleksiyonu da doğal
6:17
olarak tables yani tablolar
6:20
koleksiyonudur. O halde kritik soruyu
6:22
soralım. Yüzlerce kaydın olduğu bu
6:24
tablolardan aradığımız o spesifik veriyi
6:26
nasıl cımbızlayıp alacağız? O meşhur
6:28
Tscle komutuna bir bakalım. Select
6:30
yıldız from kişiler ver ad eşittir Ayşe.
6:33
Bu komut aslında veri tabanına şunu
6:35
söylüyor. Git kişiler tablosunu bul.
6:37
İçindeki tüm sütunları getir. Ama bir
6:40
şartım var. Sadece adı Ayşe olanları
6:42
istiyorum. İşte filtreleme dediğimiz
6:44
olay bu kesin ve evrensel SQL söz dizimi
6:46
ile bu kadar basit bir şekilde
6:48
yapılıyor. 4. aşama XML ve güvenlik
6:52
altyapısı. Verilerimiz artık
6:54
uygulamamızın damarlarında yoğun bir
6:56
şekilde akıyor. Şimdi sıra bu verileri
6:58
dış dünyayla yapılandırılmış formatlarda
7:00
paylaşmaya ve tabii ki bu bağlantıları
7:03
duvar gibi güvenli hale getirmeye geldi.
7:05
XML dediğimiz yapı devasa bir ağaç
7:07
gibidir ve bu dallar arasında gezinirken
7:10
çok hassas bir hedefleme lazerine
7:12
ihtiyacımız olur. Mesela Xpad sorguları
7:14
yazıyorsunuz ve bir etiketin tamamını
7:17
değil de sadece o küçük özelliğini yani
7:20
niteliğini seçmek istiyorsunuz. İşte o
7:22
noktada imdadımıza bildiğimiz o add
7:25
işareti yetişiyor. Kesin nişancı. Öte
7:27
yandan C# tarafında bu XML elementine
7:30
yepyeni bir özellik eklemek istersek ne
7:32
yapacağız? İşte o zaman attribute stock
7:35
append metodunu devreye sokuyoruz. Bu
7:37
metot adeta yeni nitelikleri alıp mevcut
7:40
XML düğümlerimize fiziksel olarak
7:41
zımbalar. Tabii bu kaden veriyi oradan
7:44
oraya gönderirken her şeyi güvenli
7:46
tutmamız kesinlikle şart. C#ARP
7:49
platformunda şifreleme yapmak, kimlik
7:51
doğrulamak, yetkilendirme gibi o hayati
7:54
operasyonları yönetmek istiyorsanız
7:56
çalacağınız tek bir kapı var. Security
7:58
isim uzayı. Yani sınavda soruyu okurken
8:01
cümlenin içinde kriptografi, erişim
8:03
hakları veya güvenlik kelimelerini
8:05
gördüğünüz an beyninizde anında bir
8:07
ampul yanmalı. Cevap tartışmasız
8:09
system.seecurity.
8:11
Ve geldik 5. yani son aşamaya. Raporlama
8:15
ve kurulum işlemleri. Uygulamamızı
8:17
kodladık. Ekranlarını harika çizdik.
8:19
Verileri bağlayıp güvenliği de tam bir
8:21
kale gibi sağladık. Artık kurdele kesme
8:23
zamanı. Yazılımı paketleyip müşterimize
8:26
teslim ediyoruz. Kurumsal projelerde
8:28
raporlama kelimesi sürekli havada
8:30
uçuşur. Ama bu verileri öylece ekrana
8:33
fırlatıp atmak demek değildir. Aslında
8:35
raporlama o ham, karmaşık, anlaşılması
8:38
zor veri tabanı rakamlarını alıp
8:40
kullanıcının isteklerine göre
8:42
filtreleyen ve onları görsel, okunaklı
8:45
hatta yazıcıdan çıkarılabilir fiziksel
8:47
içgörülere dönüştüren o sihirli sürecin
8:49
ta kendisidir. Şimdi dikkatinizi çekmek
8:51
istediğim çok ilginç bir detay var.
8:54
Crystal Reports gibi popüler raporlama
8:56
araçlarının veriye ulaşmak için
8:58
kullandığı iki zıt model vardır. Biri
9:00
pool yani çekme modeli. Burada rapor son
9:04
derece bağımsızdır. Otonom davranır.
9:06
Gider veri tabanından tam olarak
9:07
ihtiyacı olan veriyi kendisi çeker alır.
9:10
Diğeri ise push yani itme modeli. Burada
9:13
patron sizsiniz. Geliştirici olarak
9:15
veriyi önce alır bellekteki data setin
9:18
içine koyarsınız. Sonra da o veriyi
9:20
zorla rapora itersiniz. Pull ve push.
9:23
İsimlendirmeler arkadaki o koca
9:24
mühendisliği ne kadar da güzel ve basit
9:26
bir şekilde özetliyor değil mi? Her
9:28
şeyimiz hazır. Şimdi son bir dokunuşla
9:31
yazılımımızı müşterinin bilgisayarına
9:32
kuracağız. Visual Studio'da setup
9:34
projemizi açıyoruz. İkinci adımda
9:36
dosyaların tam olarak nereye
9:38
yerleşeceğine karar verdiğimiz dosya
9:40
sistemi editörüne yani file system
9:42
editöre giriyoruz. Ve üçüncü en
9:44
tatminkar adım. O şık uygulamamızın kısa
9:47
yolunu kullanıcının bilgisayarını
9:48
açtığında ilk göreceği yere masaüstüne
9:50
koymak için hedeflerden users desktop
9:53
klasörünü seçiyoruz. Ve işte oldu.
9:55
Yazılım geliştirme döngümüzü başarıyla
9:57
tamamladık. Evet bu devasa yaşam
9:59
döngüsünü baştan sona tamamladık. C#ARP
10:02
metodolojisi, GDI Plus'la çizimlerin o
10:05
fiziksel mantığı, AONET altyapısı, XML
10:08
kuralları, kurulum ayarları. Artık tüm
10:11
bunlara inanılmaz derecede hakimsiniz.
10:13
Bu keyifli özet çalışmayla o yaklaşan
10:16
finale kelimenin tam anlamıyla
10:17
hazırsınız. Ama burada size veda etmeden
10:20
önce kafanıza takılmasını istediğim asıl
10:22
bir soru var. Sınavı zaten bir şekilde
10:25
başarıyla geçeceksiniz. O kesin. Peki
10:27
gerçek dünyada az önce konuştuğumuz bu
10:29
güçlü C#arp becerileriyle sıfırdan
10:32
hayata geçireceğiniz ilk kendi büyük
10:34
projeniz ne olacak? Sahip olduğunuz bu
10:36
yetenekle dünyada neyi değiştirmek
10:38
isteyeceksiniz? Bunu bir düşünün. Merak
10:41
etmeye, kodlamaya ve keşfetmeye her
10:43
zaman devam edin. Sınavda şimdiden büyük
10:46
başarılar.
10:49
Ç

