Evet, selamlar.
Bu yazımda GUI tabanlı uygulamaların nasıl çalıştığına bakacağız.
GUI'nin ne olduğunu hepiniz biliyorsunuz sanırım. Günlük hayatta kullandığımız çoğu uygulama GUI tabanlı uygulamadır. Grafik arayüze sahiptir.
(Resim internetten alınmıştır.)
GUI tabanlı uygulamalarda, her şey bir penceredir. Örneğin yukarıdaki uygulamayı ele alacak olursak, buradaki sayıların girildiği metin kutuları, "Add" butonu gibi nesneler de bir penceredir. Ana pencerenin "child window'u" diye geçerler. (Az sonra parent-child ilişkisini ele alacağım.)
Öncelikle, GUI tabanlı uygulamaların nasıl çalıştığını anlayabilmemiz için, klasik uygulamaların nasıl çalıştığını bilmemiz gerekir. Ben size şöyle bir "pseudocode" parçası ile açıklayayım.
Kodda da anlayabildiğiniz gibi, klasik uygulamalarda, çalışma zamanı içerisinde kullanıcıdan veri alınır, sonra o veri işlenir ve çıkış yapılır.
Fakat GUI'li uygulamalarda böyle değil. GUI'li uygulamalarda kodlar parça parça (code nuggets, code snippets) çalıştırılır. Bu parçalar event-handling gibi parçalardır. Yani olabilecek olaylar olduğu zaman ne yapılabileceğini yazarız. Örneğin, yukarıdaki uygulamayı tekrar ele alacak olursak, butona tıklandığı zaman sayıların eklenmesi, bir kod parçasıdır.
Bir "pseudocode" ile daha açıklayayım.
Gördüğünüz gibi, "Add" butonuna tıklanınca ne olacağını temsil edecek hayali bir kod yazdık.
Parent-child ilişkisi
GUI uygulamalarında parent-child ilişkisi bulunmaktadır. Örneğin, yukarıdaki uygulamada görmüş olduğunuz tüm nesnelerin (textbox, buton vs.) parent'ı, yani bağlı oldukları nesnesi ana pencere kutucuğudur. Şöyle bir ağaç görünümü oluşturabilirim sanırım yukarıdaki uygulama için.
Örneğin bir butona bastığımızda pencere içinde pencerenin açılması gibi gibi olaylar parent-child ilişkisi ile bağlıdır.
Yazımı okuduğunuz için teşekkür ederim.
Bu yazımda GUI tabanlı uygulamaların nasıl çalıştığına bakacağız.
GUI'nin ne olduğunu hepiniz biliyorsunuz sanırım. Günlük hayatta kullandığımız çoğu uygulama GUI tabanlı uygulamadır. Grafik arayüze sahiptir.
GUI tabanlı uygulamalarda, her şey bir penceredir. Örneğin yukarıdaki uygulamayı ele alacak olursak, buradaki sayıların girildiği metin kutuları, "Add" butonu gibi nesneler de bir penceredir. Ana pencerenin "child window'u" diye geçerler. (Az sonra parent-child ilişkisini ele alacağım.)
Öncelikle, GUI tabanlı uygulamaların nasıl çalıştığını anlayabilmemiz için, klasik uygulamaların nasıl çalıştığını bilmemiz gerekir. Ben size şöyle bir "pseudocode" parçası ile açıklayayım.
Kod:
//Genel uygulama yapısı
while(calismak){
veriyiAl();
veriyiKullan();
CikisYap();
}
Kodda da anlayabildiğiniz gibi, klasik uygulamalarda, çalışma zamanı içerisinde kullanıcıdan veri alınır, sonra o veri işlenir ve çıkış yapılır.
Fakat GUI'li uygulamalarda böyle değil. GUI'li uygulamalarda kodlar parça parça (code nuggets, code snippets) çalıştırılır. Bu parçalar event-handling gibi parçalardır. Yani olabilecek olaylar olduğu zaman ne yapılabileceğini yazarız. Örneğin, yukarıdaki uygulamayı tekrar ele alacak olursak, butona tıklandığı zaman sayıların eklenmesi, bir kod parçasıdır.
Bir "pseudocode" ile daha açıklayayım.
Kod:
/*Burada kodun gerisi bulunmakta...*/
GUICalculator::OnButtonAddClicked(){ //Ana sınıfımız olan pencere sınıfımızı
TextBoxFinal.Text = (int)TextBox1.text + (int)TextBox2.text; //"Tip dönüşümü" yapma sebebim ise, programlama dilleri string'leri toplamak isteyecektir ve bu da kötü bir sonucu doğuracaktır.
}
/*Burada kodun devamı bulunmakta...*/
Gördüğünüz gibi, "Add" butonuna tıklanınca ne olacağını temsil edecek hayali bir kod yazdık.
Parent-child ilişkisi
GUI uygulamalarında parent-child ilişkisi bulunmaktadır. Örneğin, yukarıdaki uygulamada görmüş olduğunuz tüm nesnelerin (textbox, buton vs.) parent'ı, yani bağlı oldukları nesnesi ana pencere kutucuğudur. Şöyle bir ağaç görünümü oluşturabilirim sanırım yukarıdaki uygulama için.
Kod:
MainWindow
-->TextBox1
-->TextBox2
-->TextBox3
-->AddButton
Örneğin bir butona bastığımızda pencere içinde pencerenin açılması gibi gibi olaylar parent-child ilişkisi ile bağlıdır.
Yazımı okuduğunuz için teşekkür ederim.