Herhangi bir yazılım dilinin oluşturduğu programlamalar nasıl arayüze kavuşur?

Katılım
17 Nisan 2020
Mesajlar
394
Çözümler
2
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Herkese merhaba arkadaşlar. Belki çok basit bir soru olabilir ama hala anlamadığım şeyler var. Hep yazılıma ilgi duydum uğraştım ama bir türlü adam gibi temel atamadım. Python, C++ vb. dillerle oluşturduğumuz yazılımlar bir arayüze nasıl kavuşur? Bu kolay bir işlem mi? Teşekkürler.
 
Son düzenleyen: Moderatör:
Framework'ler vasıtası ile yapılıyor genelde. Framework'ler ise GUI sisteminin üzerinde çalışır.

Örnek vermek gerekirse, C++ uygulamamızda Qt Framework'ü kullandığımız zaman, yazdığımız uygulamayı Linux'ta derlettiğimiz zaman X11 server üzerinde çalışır, Windows üzerinde derletince de Windows'un GUI'sinde çalışır.

Framework kullanmak zorunda da değilsiniz ama framework işinizi çok daha rahat yapabilmenizi sağlar. Windows.h ile de mesela Windows üzerinde böyle grafik arayüzlü uygulama geliştirebilirsiniz fakat uğraştırıcı olur, Framework'ler size "abstraction" sağlar.

Mesela, sadece pencere çıkartan Windows.h tabanlı bir kod koyayım.

C++:
#include <windows.h>
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpszCmdParam, int nCmdShow)
{
   WNDCLASS wndClass;
   HWND hWnd;
   MSG message;
 
   if (!hPrevInstance) {
      wndClass.style = CS_HREDRAW | CS_VREDRAW;
      wndClass.cbClsExtra = 0;
      wndClass.cbWndExtra = 0;
      wndClass.hInstance = hInstance;
      wndClass.hIcon = LoadIcon(NULL, IDI_QUESTION);
      wndClass.hbrBackground = GetStockObject(WHITE_BRUSH);
      wndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
      wndClass.lpszMenuName = NULL;
      wndClass.lpszClassName = "Generic";
      wndClass.lpfnWndProc = (WNDPROC) WndProc;
      if (!RegisterClass(&wndClass))
         return -1;
   }
   hWnd = CreateWindow("Generic", "Sample Windows",
      WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT,
      0,
      CW_USEDEFAULT,
      0,
      NULL,
      NULL,
      hInstance,
      NULL);
   if (!hWnd)
      return -1;
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
   while (GetMessage(&message, 0, 0, 0)) {
      TranslateMessage(&message);
      DispatchMessage(&message);
   }
   return (message.wParam);
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam)
{
   switch (message) {
      case WM_DESTROY:
         PostQuitMessage(0);
         break;
      default:
         return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}
 
Son düzenleme:
Herkese merhaba arkadaşlar. Belki çok basit bir soru olabilir ama hala anlamadığım şeyler var. Hep yazılıma ilgi duydum uğraştım ama bir türlü adam gibi temel atamadım. Python, C++ vb. dillerle oluşturduğumuz yazılımlar bir arayüze nasıl kavuşur? Bu kolay bir işlem mi? Teşekkürler.

Arayüz için ayrı kod yazılır. Back-end dediğimiz arka planda çalışan kodlar buradaki butonlara, yazı yazdığımız textboxlara, kullanılan diğer materyallere(checkbox radiobox vb.) bağlanır. Kısaca mantığı budur.
 
Arayüz için ayrı kod yazılır. Back-end dediğimiz arka planda çalışan kodlar buradaki butonlara, yazı yazdığımız textboxlara, kullanılan diğer materyallere(checkbox radiobox vb.) bağlanır. Kısaca mantığı budur.
Yani Visual Studioda bir web arayüzü oluştumanın daha karmaşığı?
Framework'ler vasıtası ile yapılıyor genelde. Framework'ler ise GUI sisteminin üzerinde çalışır.

Örnek vermek gerekirse, C++ uygulamamızda Qt Framework'ü kullandığımız zaman, yazdığımız uygulamayı Linux'ta derlettiğimiz zaman X11 server üzerinde çalışır, Windows üzerinde derletince de Windows'un GUI'sinde çalışır.

Framework kullanmak zorunda da değilsiniz ama framework işinizi çok daha rahat yapabilmenizi sağlar. Windows.h ile de mesela Windows üzerinde böyle grafik arayüzlü uygulama geliştirebilirsiniz fakat uğraştırıcı olur, Framework'ler size "abstraction" sağlar.

Mesela, sadece pencere çıkartan Windows.h tabanlı bir kod koyayım.

C++:
#include <windows.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpszCmdParam, int nCmdShow)
{
   WNDCLASS wndClass;
   HWND hWnd;
   MSG message;

   if (!hPrevInstance) {
      wndClass.style = CS_HREDRAW | CS_VREDRAW;
      wndClass.cbClsExtra = 0;
      wndClass.cbWndExtra = 0;
      wndClass.hInstance = hInstance;
      wndClass.hIcon = LoadIcon(NULL, IDI_QUESTION);
      wndClass.hbrBackground = GetStockObject(WHITE_BRUSH);
      wndClass.hCursor = LoadCursor(NULL,IDC_ARROW);
      wndClass.lpszMenuName = NULL;
      wndClass.lpszClassName = "Generic";
      wndClass.lpfnWndProc = (WNDPROC) WndProc;
      if (!RegisterClass(&wndClass))
         return -1;
   }
   hWnd = CreateWindow("Generic", "Sample Windows",
      WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT,
      0,
      CW_USEDEFAULT,
      0,
      NULL,
      NULL,
      hInstance,
      NULL);
   if (!hWnd)
      return -1;
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
   while (GetMessage(&message, 0, 0, 0)) {
      TranslateMessage(&message);
      DispatchMessage(&message);
   }
   return (message.wParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam)
{
   switch (message) {
      case WM_DESTROY:
         PostQuitMessage(0);
         break;
      default:
         return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}
valla siz benim anladığım dilin daha karmaşığını konuşuyorsunuz ingilizcem bile yetmişmiyo :)
 
Yani Visual Studio'da bir web arayüzü oluştumanın daha karmaşığı?

Yani ama her dilde Visual Studio gibi sürükle bırak tarzında yeni eklenmiyor kodunu kendin yazmak zorundasın aslında Visual Studio'da aynı şeyi yapıyor fakat koda daha az müdahale etmenizi sağlıyor. Yinede koda müdahale edebilirsiniz ama.
 
Arayüzü oluşturan elementer vardır, bunlar genelde kütüphanelerle beraber gelir.

Ya da bir X dili, arayü oluşturmak için aracı olur. Yani arayüzü dil oluşturmaz ama arayüzün özelliklerini GUI tasarımının niteliklerini o X dili ile belirlersin.

1. seçenek için örnek olarak Python ve Tkinter'i verebilirim. 2. seçeneğe göre daha ilkel oluyorlar desem, yanılmam sanırım. :)
 

Geri
Yukarı