• Grafiksel bir kullanıcı arayüzü tasarlamak. "Veri tabanları ve veri tabanı yönetim sistemleri" disiplini üzerine bir eğitim bloğunun geliştirilmesi

    Grafik öğeleri yerleştirmek istediğiniz bir grafik kullanıcı arabirimi oluştururken, Genel yapı ve uygulamaların akışı, programcıyı bir ölçüde sanatçı olmaya teşvik eder. Sunum oluşturmaya, öğeleri yerleştirmeye ve bir yapı düzenlemeye yardımcı olabilecek standart kurallar yoktur. İyi bir grafik kullanıcı arayüzü, bir sanat eseri olarak kabul edilir. Arayüz tasarımı bir bilimden çok bir sanat olduğundan, bu alanda uyulması gereken katı ve hızlı kurallar yoktur. Çok fazla seçenek, uygulamanın doğası, kullanıcılar ve bağlam tarafından belirlenir.

    Ancak, bir dizi var pratik tavsiye arayüzlerin tasarımını kolaylaştırmak için geliştiriciler tarafından takip edilmelidir.

    ¦ Farklı menüleri birbirine bağlayan karmaşık yapılardan (ağaç gibi) kaçınılmalıdır. Bir menü çubuğuna her biri altıdan fazla seçenek içermeyen altıdan fazla menü eklemek en iyisidir.

    ¦ Nesnelerin tutarlı bir değeri olmalıdır. Örneğin, tüm simgeleri etkinleştirmek için fareye çift tıklayın. Bazı modern arayüzler bu öneriyi karşılamaz ve yalnızca kullanıcı çektikten sonra etkin olan simgeler içerir

    onlara itiraz edin. Kaydırma çubukları yalnızca kaydırma için kullanılmalı ve kitaplık simgeleri kullanılıyorsa, örneğin yazıcı simgesinin her zaman yazdırma için kullanıldığından emin olmak için dikkatlice kontrol edilmelidir.

    ¦ Yukarıda belirtildiği gibi tüm simgeleri etkinleştirirken, fareye çift tıklayın. Tek bir fare tıklamasıyla etkinleştirilen nesnelerin simgeleri için de benzer bir sonuç elde etmek için, çift tıklamayı da programlamanız önerilir. Denetim Masası menüsündekiler gibi pek çok seçenek, simgeler gibi görünür, ancak tek bir fare tıklamasıyla etkinleştirilen nesnelerdir. Kullanıcıların bu tür nesnelerle çalışırken nasıl davranabileceklerini düşünün (yani üzerlerine çift tıklamalarına izin verin) ve istenen sonuca ulaşmalarına yardımcı olun.

    ¦ Arayüz menüleri, sistemin mevcut durumunu yansıtmalıdır. Grafik kullanıcı arayüzü yaratıcılarının çoğuna yol gösteren ana ilkelerden biri, kullanıcı eylemlerinden bağımsız olarak tüm arayüz araçlarına erişim sağlamaktır. Alt kural, basit uygulamalarla uyumludur, ancak daha karmaşık olanlar için daha az kullanışlıdır.

    ¦ Farklı menülerde ortak olan öğeler tek bir yere yerleştirilmelidir. Örneğin, Tamam ve İptal düğmeleri birbirine göre her zaman aynı yerde olmalı ve farklı iletişim kutularında aynı yeri işgal etmelidir.

    ¦ Kullanıcıların görüşüne uymuyorsa, menü öğelerinin tutarlılığını sağlamaya çalışmamalısınız. Örneğin, kullanıcılar, bir dosyayı aynı cihazda bulunan bir klasörden diğerine sürüklemenin, dosyanın ikinci klasöre taşınmasına neden olduğunu fark eder.

    Ayrıca, bir dosyayı başka bir cihaza sürüklemenin orada orijinalin bir kopyasını oluşturduğuna inanıyorlar. Bundan, çekme işlevinin uygulanmasının tutarsız olacağı sonucu çıkar, yani. farklı durumlarda farklı. Ancak bu, dikkate alınması gereken kullanıcıların isteğidir. Tutarlılık için çabalamak sadece bir tavsiyedir, katı ve hızlı bir kural değildir.

    Grafik kullanıcı arayüzleri için ergonomik gereksinimler, "multimedya" (multimedya) - durağan görüntüler ve hareketli video, hareketli bilgisayar grafikleri ve metin, konuşma ve yüksek kaliteli sesle çalışma sağlayan etkileşimli sistemler - geliştirilmesiyle açıkça yeterli olmadığı ortaya çıktı. Bu sistemlerin ergonomik olarak araştırılması ve geliştirilmesi, karmaşık ve profesyonel açıdan heyecan verici bir iştir.

    Çoğu uygulama geliştirme proje yöneticisi, diyor B. Tognazzini, arayüz üzerinde çalışmaya başlamak için projenin tamamlanmasını bekliyor. Bu, bina çerçevesi dikildikten sonra mimarın davet edildiği bir ev inşa etmeyi anımsatır. Tüm geliştiricilerin, bir arayüz oluşturma sürecini organize etme konusunda farklı bir yaklaşımı vardır. Ancak, tüm geliştiricilerin uyması gereken genel noktalar vardır:

    1) amacı anlamak yazılım ürünüçalışma tarzlarını ve bireysel alışkanlıklarını daha iyi anlamak için çoğu zaman tüm iş günlerini onlarla geçiren kullanıcılarla yakın iletişim kurarak tüm detaylarıyla;

    2) bir arayüz oluşturmak tek bir kişinin işi değil, üç alanın temsilcilerinin işidir: kullanıcıların arayüzün ana unsurları hakkındaki görüşlerini öğrenen ve bunları açıklayan bir uzman; arayüz geliştiricisi ve grafik yaratıcısı;

    3) deneyimli bir kişi arayüz uzmanı ve çalışma grubu ile kullanıcılar arasında aracı olarak aday gösterilmelidir;

    4) kontrol etmek, layout oluşturmak ve tekrar kontrol etmek, çünkü yazılım ürününün amacı tam olarak anlaşılsa bile kullanıcıların tüm ihtiyaçlarını öngörmek mümkün değildir.

    D.Norman, arabirimlerin uygulamanın geliştirilmesinde yer almayan kişiler tarafından oluşturulması gerektiğine inanıyor, çünkü geliştiriciler programın ilkeleri hakkında çok fazla şey biliyor ve bu yalnızca bir arabirim oluşturulmasını engelliyor. Bir grafik kullanıcı arayüzünün erdemleri genellikle kabul edilir ve belki de şiirseldir.
    bu nedenle ciddi bir analizin nesnesi haline gelmemiştir. Öğrenme kolaylığının genellikle kullanıcının daha sonra programın tüm özelliklerini tam olarak kullanmasını engellediği geleneksel yazılım geliştirici kuralı, grafik arayüzle de ilgilidir. Bir örnek, Macintosh için öğrenmesi çok kolay güzel bir arayüzle sağlanan bir sigorta uygulamasını kullanan bir Amerikan sigorta şirketi için bir projenin geliştirilmesidir. Ancak, iki yıllık çalışmanın ardından, son kullanıcılar çok yetkin hale geldi. çeşitli işlevler grafiksel kullanıcı arayüzünün onları sadece yavaşlattığı bu uygulama. Bir grafik arayüzün seçimi, kullanıcının görevinin doğasına göre belirlenmelidir.

    GUI standardı.

    Biri büyük değişiklikler bilgisayar endüstrisinde - bir grafik arayüzün ortaya çıkışı. Öyleyse, Windows uygulamalarının nasıl görünmesi gerektiğini tanımlayan GUI standartlarını benimsemeye ihtiyaç vardı? Macintosh vb. Satıcıların uygulamalarını Windows rozeti alacak şekilde uyarladığı sertifika programları bile var. Bu birkaç nedenden dolayı yapılır.

    Windows veya Mac'in avantajlarından biri standart görünümleridir. Birinde çalışmayı öğrendiğinde, geri kalanının sahibi olduğunu düşün. Çoğu Windows uygulaması aynı kuralları kullanır, böylece herhangi bir dosyanın nasıl açılacağını, kaydedileceğini, yazdırılacağını, kapatılacağını ve kopyalanacağını bilirsiniz. Standart arayüz oldukça kullanıcı dostudur. Uygulamalarınızı, kullanıcıların zaten birlikte çalışmayı öğrendiği diğer Windows uygulamalarına benzetmeye çalışmanız gerekir. GUI geliştirme için yedi genel ilke vardır. Bunları öğrenir ve takip ederseniz, uygulama tasarımınız iyi olacaktır.

    GUI geliştirmenin yedi ilkesi.

    Yedi Genel GUI Tasarım İlkesi, Microsoft Windows Arayüz Kılavuzu'ndan alınmıştır. Kendi standartlarınızı oluşturabileceğiniz planı oluştururlar. Bu şema, geliştiricilere ve kullanıcılara iki önemli fayda sağlar. İlk olarak, uygulamalar profesyonel görünüyor. İkincisi, işlevseldirler, diğer uygulamalarla tutarlıdırlar ve kullanıcıların öğrenmesi kolaydır.

    Elbette bir uygulamanın başarılı olabilmesi için iyi yazılmış ve kullanışlı olması gerekir - bu temel gereksinimdir. Bahsettiğimiz ilkeler, geliştiriciye sadece düşünmesi için yiyecek verir.

    1. Kullanıcının uygulamayı kontrol etmesine izin verin.

    2. Nesne/eylem paradigmasını takip edin.

    3. Tutarlı olun.

    4. Uygulamalarınızı basit ve anlaşılır hale getirin.

    5. Uyum için çabalayın.

    6. Kullanıcı geri bildirimi sağlayın.

    7. Hoşgörülü olun

    İlke bir: Kullanıcının uygulamayı kontrol etmesine izin verin.

    Kullanıcı, uygulamayı yönetmeli, yani uygulamanın her bir modülüne başka herhangi bir modülden erişebilmelidir. Önceden, bu tür bir erişim için hiyerarşik bir menü kullanılıyordu.


    Diyelim ki kullanıcı yeni bir client eklemek istiyor, örnekte kullanıcının ACCOUNTS RECCIEVAble modülüne gitmesi ve oradan yeni bir client eklemesi gerekiyor. Ne yapacağını nereden biliyor? Muhtemelen bu uygulamayla ilgili deneyimimden. Ve GUI dünyasında, kullanıcı menüden Yeni komutunu ve ardından Şekil 1'de gösterildiği gibi Müşteri'yi seçer. Bunda modern sistem Dosya menüsünden yeni bir müşteri, satıcı veya stok girişi ekleyebilirsiniz. Bu, üye iş yeri ekranındayken müşteri kaydını değiştirmenize olanak tanır ve bunun tersi de geçerlidir. Kullanıcının artık karmaşık ve kafa karıştırıcı hiyerarşik menüyü anlaması gerekmiyor.

    İkinci İlke: Nesne/eylem paradigmasını izleyin.

    Nesne/eylem paradigması, sistemdeki tüm nesneler üzerinde herhangi bir işlemin yapılabileceğini belirtir. En basit ve en belirgin örnek müşteri tabanı destek ekranıdır (Şekil). Ekranda bir dizi düğme bulunur ve düğmelerin her biri, seçilen müşteri hakkındaki bilgiler üzerinde bazı eylemler gerçekleştirmenize izin verir. Silebilir, düzenleyebilir, yazdırabilir vb. Belirli bir istemcide gerçekleştirilebilecek eylemler, uygun zamanlarda kullanılabilir olmalı veya bulunmamalıdır. Örneğin bir müşteri kaydı düzenleme modundayken Sil ve Yeni butonları devre dışı bırakılmalıdır.

    İlke üç: tutarlı olun.

    Tutarlılık, GUI geliştirmenin en önemli ilkelerinden biridir. GUI - kullanıcıların eski programlardan daha fazla uygulamayı keşfetmesine izin verir. Ve tüm bunlar tutarlılık ilkesi sayesinde. Bir kullanıcı yeni bir uygulamayla karşılaştığında, zaten aşinadır. büyük komutlar: Dosyaları açın, yazdırın ve kaydedin. Bu platformlar üzerinde geliştirilen uygulamalar genellikle birbiriyle uyumludur.

    Bu nedenle, yeni uygulamalar oluştururken tutarlı olun. Yeni bir giriş eklemek için Yeni komutunu kullandıysanız, her yerde kullanın. Bu kelimeyi başkalarıyla değiştirmemelisiniz - örneğin, Add 9 add). Tutarlılığınız sayesinde kullanıcılar, Yeni komutunu gördükleri her yerde yeni bir giriş eklemek için onu kullanabileceklerini bilecekler.

    Dördüncü ilke: uygulamayı basit ve açık hale getirin.

    Bu düşünceyi şu şekilde ifade edebilirsiniz: jargon kullanmayın. İki düğmeli bir ekran var. Biri “Veritabanını paketle” diyor, diğeri “Silinmek üzere işaretlenmiş kayıtları kaldır” diyor. İkinci giriş kesinlikle kullanıcı için daha anlaşılır olacaktır.

    Uygulama geliştirirken, arayüzde programlama argosu kullanmak genellikle cazip gelir. Mümkün olduğunca bundan kaçınmaya çalışın.

    Beşinci Prensip: Uyum İçin Çabalayın

    Siyah beyaz olsa bile, bu ekranın önemli bir estetik dezavantajı var: beyaz bir arka plan ve üzerinde kontrast oluşturan nesneler. Şek. Aynı ekran renk açısından dengeli görünüyor.

    Windows milyonlarca renk kombinasyonunu aktarabilir. Bu, hepsinin kullanılması gerektiği anlamına mı geliyor? Tabii ki hayır. Basit, sakin renkler seçmeli ve bazı programcıların nedense hoşuna giden rastgele karışımlarından kaçınmalısınız.

    Altıncı ilke. Kullanıcı geri bildirimi sağlayın.

    Başvurunuzun tamamlanması uzun zaman alan bir süreci olduğunu hayal edin. Bu süre zarfında ekranda şu içerikte bir mesaj görüntülenebilir: "Program çalışıyor, lütfen bekleyin." Uygun çözüm; ancak kullanıcı askıda olmadığını nasıl biliyor? Bu nedenle, programda her şey yoluna girecek olsa da, uygulamaya “üç parmakla selam” (Ctrl + Alt + Del) vermesi çok muhtemeldir.

    Kullanıcıya sürecin hangi bölümünün yapıldığını göstermek daha iyidir. Ardından programı gereksiz yere yarıda kesmeyecek, işin ne kadar ilerlediğini değerlendirebilecek ve süreç tamamlanana kadar başka şeyler yapabilecek. Böylece kullanıcı verimliliği yaklaşık yüzde 25 oranında artacak. Bu sonuç, ölçüm aletinin ekranda basitçe görüntülenmesiyle elde edilebilir. Tipik olarak, "işlenen 100 girişten 10'u" veya "%40 tamamlandı" gibi mesajlar görüntülenir. Daha da iyisi, hem işlenen kayıtların sayısını hem de yüzdelerini gösterin."

    Yedinci İlke: Hoşgörülü Olun

    Her birimiz bazen yanlışlıkla yanlış düğmeye basarak bir kaydı sildik. Bu nedenle, kullanıcıya fikrini değiştirme veya az önce gerçekleştirilen eylemleri iptal etme fırsatı bırakın. Bir işlem uzun sürüyorsa, büyük miktarda veriyi değiştiriyorsa veya kullanıcının bir işlem yapmadan önce verileri yedeklemesini gerektiriyorsa uygun bir uyarı verilmelidir.İki kez onay gerektiren ve ardından şifre isteyen uygulamalar gördüm. Programlarınızın bu düzeyde korumaya ihtiyacı var mı? Belki. Geliştiricinin görevi, işin herhangi bir aşamasında bir hata yaparsa kullanıcıya yardımcı olmaktır.

    GUI Standardında Sözleşmelerin Önemi.

    Gördüğünüz gibi, GUI tasarım ilkeleri çok basittir ve ekranlar oluşturulurken kullanılmalıdır. Ancak, ekranı tasarlamadan önce nasıl görüneceğini belirlemeniz gerekir. Boyutlarını, yazı tiplerini, renklerini, mesaj stillerini vb. seçin. Bu soruları önceden çözerek işinizi önemli ölçüde hızlandıracaksınız. Daha sonra yazı tipi veya mesaj stili söz konusu olduğunda, sadece standarda bakarsınız.

    İyi çalışmalarınızı bilgi bankasına göndermek basittir. Aşağıdaki formu kullanın

    Bilgi tabanını çalışmalarında ve işlerinde kullanan öğrenciler, lisansüstü öğrenciler, genç bilim adamları size çok minnettar olacaklar.

    Yayınlanan http://www.allbest.ru/

    Yayınlanan http://www.allbest.ru/

    RUSYA FEDERASYONU FEDERAL EĞİTİM AJANSI

    devlet eğitim kurumu

    yüksek mesleki eğitim

    Rus Devleti İnsani YardımÜniversite

    Bilgi Bilimi ve Güvenlik Teknolojileri Enstitüsü

    Genel Bilişim Bölümü

    ÖLÇEK

    BİLGİ TEKNOLOJİLERİ İÇİN

    GRAFİK ARAYÜZLER VE GELİŞTİRİLMESİ İÇİN ARAÇLAR

    Lisichenok Konstantin Viktorovich

    Harici çalışma 3 yıllık eğitim

    (4 yıllık eğitim süresi)

    Grup b (bilgi küresi)

    Bilim danışmanı,

    Teknik Bilimler Adayı, Öğretim Görevlisi: Mashintsov E.A.

    Moskova 2005

    Plan

    giriiş

    X Pencere Sistemi

    Sistemin genel düzeni X Penceresi

    X Toolkit Intrinsic (Xt) Kitaplığı ile Programlama

    Xt nesneleri, sınıflandırılmaları

    Bilgi kaynakları

    giriiş

    1959'da, UNESCO'nun bilgi işleme konferansında ilk kez, Bay Strechi bilgisayarlardaki sorunları çözmek için bir zaman paylaşım modu önerdiğinde, o andan itibaren etkileşimli hesaplamanın başlangıcını saymak alışılmış bir durumdur ve sonuç olarak, insan-makine arayüzünün incelenmesi. Bilgisayarların gücü arttıkça, konuşma yazılımı bileşeninin maliyeti de arttı. Etkileşimi grafiklerle birleştiren iş istasyonlarının pazarına hızla girmesi makine verimliliği sorununu daha da kötüleştirdi. Verimlilik terimi o zamandan beri anlamını değiştirdi - daha önce işlemci süresi ve kullanılan bellek miktarı gibi özellikleri yansıtıyorsa, şimdi geliştirme kolaylığı, bakım kolaylığı ve programla çalışmanın rahatlığı olarak anlaşılıyor. Bu nedenle, kullanıcı arayüzünün araştırma ve geliştirme maliyetleri haklıdır.

    Herhangi bir uygulama yazılımının geliştirilmesi, kural olarak, bir kullanıcı arayüzünün oluşturulmasını içerir. Modern kullanıcı arayüzlerinin çoğu benzer fikirlere dayandığından ( aktif kullanım"fare", nesnelere, grafiklere vb. odaklanın. - süreçlerin ve fenomenlerin taklidi, her insanın günlük hayatından aşina olduğu algoritmaları kullanma olasılığı), o zaman bu tür "standart" arayüzler veya daha doğrusu bunların tabanlarını oluşturmak için tasarlanmış yardımcı yazılım geliştirme olasılığı ve ihtiyacı vardır. .

    Öte yandan, bu yazılımın çalışması için ihtiyaç duyacağı çok sayıda ve çeşitli donanım ve sistem platformları, kaynak kod düzeyinde taşınabilirliğini gerektirir. Yukarıdaki gereksinimler, mantıksal olarak, kullanıcı arayüzleri oluşturmak için taşınabilir bir birleşik yazılım araç takımı veya nihai uygulama yazılımı ürününü düşünürsek, yöneten (yöneten, çalıştıran, sürdüren, yöneten) bir sistem (modül, blok) fikrine yol açar. Kullanıcı arayüzü.

    Bu tür araçları (Kullanıcı Arayüzü araçları) şemaya göre sınıflandırabilirsiniz:

    * Metin tabanlı ekran sistemleri (curse, ncurse, vb.)

    * Grafik ekran sistemleri.

    * Çoklu pencere sistemleri (WMS):

    * karakter odaklı (metin);

    * grafik;

    *UI araç takımları

    * geleneksel;

    * nesne odaklı;

    * UIDS - Kullanıcı Arayüzü Geliştirme Sistemi - kullanıcı arayüzü geliştirme sistemi (araç takımı);

    * UIMS - Kullanıcı Arayüzü Yönetim Sistemi - kullanıcı arayüzü (yönetim) sistemi (yazılım modülü - ilgili UIDS ile birlikte nihai ürünün ayrılmaz bir parçası);

    * UIDE - Kullanıcı Arayüzü Geliştirme Ortamı - kullanıcı arayüzü geliştirme ortamı.

    Bu şema, sistematik bir sınıflandırma gibi davranmaz, sadece bir numaralandırmadır.

    Şu anda UIMS - Kullanıcı Arayüzü Yönetim Sistemi adı verilen sistemler içerisinde yöntemler geliştirmek ve araçlar oluşturmak için büyük çaba sarf edilmektedir.

    sistemX Penceresi

    X Penceresi ya da sadece X- orijinal olarak UNIX çalıştıran bilgisayarlarda bir grafik kullanıcı arabirimi oluşturmak için bir sistemdir. X, MIT'de (Massachusetts Teknoloji Enstitüsü) oluşturuldu. Sürüm 11.6 (X11R6) zaten yayınlandı ve sürüm 7'nin yayınlanması için hazırlıklar yapılıyor.

    X Window'un bir özelliği mimarisidir - istemci-sunucu şemasına göre oluşturulmuştur. X istemcisi ve X sunucusu arasındaki etkileşim, ilgili uygulama düzeyi protokolü - X protokolü - çerçevesinde gerçekleşir. X Penceresi, yerel bir UNIX soketi veya TCP gibi herhangi bir ağ olabilen, kullanılan aktarıma karşı kayıtsızdır. Bu, X istemcisi ve X sunucusunun farklı bilgisayarlarda da "yaşayabileceği" anlamına gelir, örn. program I/O yapabilir grafik bilgi başka bir bilgisayarın ekranında ve X istemcisi ile X sunucusunun mimarisindeki farklılıklar herhangi bir rol oynamaz - bu, X protokol standardı tarafından sağlanır. Sistem, makine ekranına grafiksel çıktı sağlar, klavye ve fare gibi giriş aygıtlarından gelen sinyalleri alır ve bunları programlara iletir. Bir çıkış cihazının birden fazla ekrana sahip olabileceğine dikkat edilmelidir. X bunlardan herhangi birine çıktı sağlar. Bütün bunlar: ekrana (ekranlar), giriş aygıtlarına (klavye, fare) X Window - display denir.

    X Window, mimarisi gereği dağıtık bilgi işlem sistemlerinde, örneğin TCP/IP (internet) ağlarında serbestçe kullanılır.

    X, kullanıcının (ekranın arkasında) aynı anda birçok programla iletişim kurmasını sağlar. Onlardan gelen çıktıların karışmaması için sistem, görüntü ekranında "sanal alt ekranlar" - pencereler oluşturur. Her uygulama (genellikle) yalnızca kendi penceresinde (veya pencerelerinde) çizim yapar. X, pencereler oluşturmak, ekranda hareket ettirmek, yeniden boyutlandırmak, görüntülemek ve benzeri işlemler için bir dizi araç sağlar.

    Kural olarak, programların bir dizi yapılandırma parametresi vardır - kaynaklar. Pencerenin rengi, metin yazı tipinin çeşitli parametreleri (bitişik yazı, boyut vb.) ve çok daha fazlası olabilir. Sistem, uygulama kaynaklarının tanımlanma ve yönetilme şeklini standartlaştırır ve bunlarla çalışmak için bir dizi prosedür içerir. Bu işlev grubuna "kaynak yöneticisi" (Xrm - X kaynak yöneticisi) denir. Program ayarlarının "depolanması", kaynak veritabanı olarak adlandırılır.

    X, olay güdümlü mimari ideolojisine göre çalışır - programların kendi aralarında ve programlar ile dış çevre arasındaki iletişimi olaylar aracılığıyla düzenler. Bir olay, sistemde meydana gelen değişiklikleri veya eylemleri tanımlayan bir bilgi birimidir. Olay tanımlayıcısı ile olay hakkında bilgi alabilirsiniz - olayın türü, özellikleri, nerede olduğu vb.

    Paylaşılan X Pencere Aygıtı

    sistem X Penceresi programların ve kitaplıkların bir koleksiyonudur. "Kalbi" özel bir programdır - X sunucusu. Bu, ekranın bağlı olduğu bilgisayarda gerçekleşen ayrı bir UNIX işlemidir. Belirli bir donanımın özelliklerini bilen, örneğin bir ilkel gibi herhangi bir grafik nesneyi ekranda görüntülemek için ne yapılması gerektiğini bilen sunucudur. Ayrıca klavye ve fareden gelen sinyalleri algılamayı ve işlemeyi de biliyor.

    Sunucu, istemci programlardan veri paketleri göndererek veya alarak onlarla iletişim kurar. Sunucu ve istemci farklı makinelerdeyse, veriler ağ üzerinden gönderilir ve aynı makinedeyse dahili kanal kullanılır. Örneğin, sunucu, kullanıcının fare düğmesine bastığını algılarsa, uygun paketi (olay) hazırlar ve düğmeye basıldığı anda fare imlecinin penceresinde olduğu istemciye gönderir. Tersine, programın ekranda bir şey göstermesi gerekiyorsa, gerekli veri paketini oluşturur ve sunucuya gönderir. Açıkçası, bu etkileşimin açıklaması, paket biçimleri vb. ve yukarıda belirtilen X protokolünün özelliklerini yapar.

    Ancak, X'i programlamak için, sunucunun uygulama ayrıntılarını ve X protokolünü bilmek gerekli değildir. Sistem, programların X "üst düzey" hizmetlere erişmesini sağlayan standart bir prosedür kitaplığı sağlar. Bu nedenle, ekranda bir noktayı görüntülemek için ilgili noktayı çağırmak yeterlidir. standart prosedür, gerekli parametreleri geçirerek. Bu prosedür, veri paketlerinin oluşturulması ve sunucuya aktarılması ile ilgili tüm işi yapacaktır.

    X penceresi

    Daha önce bahsedildiği gibi, pencere X'te temel bir kavramdır. Genellikle sistem tarafından bir istemci programa sağlanan ekranda dikdörtgen bir alanı temsil eder. İkincisi, grafik bilgileri görüntülemek için bir pencere kullanır.

    Pencerenin bir içi ve bir kenarı vardır. Bir pencerenin ana nitelikleri, iç kısmın genişliği ve yüksekliği ile kenarın genişliğidir (kalınlığı). Bu parametrelere pencere geometrisi denir.

    Her pencere, orijini pencerenin sol üst köşesinde (daha doğrusu, iç kısmında) bulunan bir koordinat sistemiyle ilişkilendirilir. X ekseni sağda ve y ekseni aşağıdadır. Her iki eksen için ölçü birimi bir pikseldir.

    X Penceresi, bir programın aynı anda birden fazla pencere oluşturmasına izin verir. Bazılarının "ebeveyn" ve diğerlerinin "çocuk" olduğu bir hiyerarşi içinde birbirlerine bağlıdırlar. Sunucunun kendisi, her ekranda, diğer tüm pencerelerin en üstteki "ebeveyni" olan bir ana pencere oluşturur. Bu pencereye "kök" penceresi denir.

    Pencere yönetimi

    Pencereler, ekranda keyfi bir şekilde birbiriyle örtüşecek şekilde düzenlenebilir. X Window, bir istemci programının pencereleri yeniden boyutlandırmak ve ekranda yeniden konumlandırmak için kullanabileceği bir takım araçlara sahiptir. Sistemin bir özelliği, fare veya klavyeyi kullanarak pencereleri yönetmek için yerleşik bir yeteneğe sahip olmamasıdır. Bunu yapmak için özel bir müşteriye ihtiyacınız var - pencere yöneticisi (pencere yöneticisi).

    Ancak yönetici, onlar hakkında hiçbir şey bilmeden pencereleri düzgün bir şekilde yönetemez. Windows, pencere yöneticisinin sağlaması gereken çeşitli özelliklere sahip olabilir: örneğin, çoğu durumda pencere başlıklarına sahip olmak uygundur, diğerlerinde pencerenin daha küçük veya tam tersi - belirli bir boyuttan daha büyük yapılamaması istenir. Pencere bir simgeye ("simge") "daraltılabilir" - bu durumda, yöneticinin hangi simgeyi kullanacağını ve ona ne isim vereceğini bilmesi gerekir. Müşteriler windows ile ilgili isteklerini yöneticiye iki şekilde iletebilirler:

    * bir X penceresi oluştururken, pencerenin başlangıç ​​konumu, geometrisi, minimum ve maksimum boyutları vb. hakkında "öneriler" (ipuçları) aktarılabilir;

    * X'in programlar arasında yerleşik iletişim yöntemini - "özellikler" mekanizmasını kullanabilirsiniz.

    X Window'un grafik yetenekleri

    X Pencere Sistemi, bitmap ekranlarda çalışacak şekilde tasarlanmıştır. Piksel başına bit sayısı, ekranın derinliği veya kalınlığı olarak adlandırılır. ile bit aynı sayılar(özdeş ikili basamaklar) tüm piksellerde sanki ekrana paralelmiş gibi bir düzlem oluşturur. Buna renk düzlemi denir. X, diğerlerini etkilemeden herhangi bir renk düzleminde/düzlemlerinde çizim yapmanızı sağlar.

    Piksel değeri, ekrandaki bir noktanın rengini doğrudan belirlemez, ancak renk değerinin depolandığı özel bir dizideki bir hücrenin sayısını ayarlar, örn. piksel değeri, geçerli paletteki renk numarasını belirtir.

    X, grafik ilkelleri çizmenize izin veren çok sayıda prosedüre sahiptir: noktalar, çizgiler, yaylar, metin; serbest biçimli alanlarla çalışın.

    "Özellikler" ve atomlar

    X Penceresi, istemci programları arasında bilgi sağlamak için yerleşik olanaklara sahiptir. Bunun için "özellikler" mekanizması kullanılır. Bir "özellik", tüm X istemcileri tarafından kullanılabilen, pencere gibi bazı nesnelerle ilişkili bir bilgi yapısıdır.Her özelliğin bir adı ve benzersiz bir tanımlayıcısı vardır - bir atom. Özellik adları genellikle büyük harfle yazılır. Atomlar, istemciler ve X sunucusu arasında gönderilen bilgi miktarını azaltmak için özelliklerin içeriğine erişmek için kullanılır.

    X, özellik adını benzersiz bir atoma çevirmenize ve tersine atomdan gerekli verileri almanıza izin veren bir dizi prosedür sağlar.

    Bazı özellikler ve bunlara karşılık gelen atomlar önceden tanımlanmıştır ve sunucu başlatıldığında oluşturulur.

    Kütüphane ProgramlamaX Araç Kiti İçsel (Xt)

    X pencere sisteminde programlamayı kolaylaştırmak için çeşitli paketler oluşturulmuştur. Mevcut fiili standart, sistemin standart dağıtımına dahil olan X Toolkit Intrinsics (Xt) kitaplığıdır. Xt, programları başlatmayı ve pencereler oluşturmayı kolaylaştırır. Ayrıca kitaplık, programlar tarafından kullanıcılarla iletişim kurarken kullanılan nesneler (kontrol öğeleri) oluşturmak için araçlar içerir. Xt terimlerinde kontrole widget denir.

    Şu anda, paket bazında, örneğin Athena, OSF / Motif, Open Look gibi çeşitli kontrol öğeleri (nesneler) kümeleri (kümeleri) uygulanmaktadır. Bu kümeler, Xt ile birlikte, arayüz oluşturmak için uygun bir araç olarak kullanılır. Yazarken rutin işleri üstlenirler. kendi uygulaması yalnızca temel X Window kitaplığı rutinlerini kullanarak, programcının bunu manuel olarak yapması gerekir.

    Temel Bilgiler Xt

    programlama kullanıcı grafik arayüzü

    Xt nesneleri

    Xt paketi, kontrol öğeleri - widget'lar (boşluklar) oluşturmak için bir temeldir. Xt anlamında, bir pencere öğesi basitçe, alanları öğenin kimliğini, varsa penceresinin kimliğini ve daha fazlasını içeren bir veri yapısıdır. Böyle bir nesnenin özniteliklerine kaynaklar denir. Bir parçacığın kaynakları, örneğin penceresinin rengi, pencere kenarlığının rengi, görüntülenen metnin yazı tipi vb. olabilir.

    Her nesne, önceden tanımlanmış sınıflardan birine (widget sınıfı) aittir. Bir sınıf, nesne yönelimli programlama için olağan anlamda anlaşılır, yani: bir sınıf, aynı özelliklere sahip bir dizi örnek (nesne) olarak düşünülebilir. Xt sınıfları bir hiyerarşi oluşturur.

    Çalışırken, program nesneleri kendisi oluşturur (sınıf örnekleri -- widget). Her biri aynı zamanda belirli bir hiyerarşiyi temsil eden koleksiyonlar oluştururlar. Bu tür hiyerarşilerin her birine pencere öğesi ağacı denir. Ağacın kökü, zorunlu olarak, özel sınıf - Shell'in alt sınıflarından birine ait olan widget'tır. Bir nesne ağacının iki parçacığı A ve B arasında, birincisi köke ikincisinden daha yakınsa, A, B'nin ebeveyni ("ebeveyn") ve B, alt nesnedir (veya "alt" nesnedir) (alt)) A. Dolayısıyla, kabuk nesnesi, bu nesne ağacındaki diğer tüm parçacıkların üst parçacığıdır. Programın ve pencere yöneticisinin etkileşimini gerçekleştiren odur.

    Açıklanan pencere öğesi hiyerarşisi, X Penceresinin bir özelliği olan pencerelerinin ilişkisine karşılık gelir. Ayrıca nesnelerin üzerine başka bir hiyerarşi bindirilir. Gerçek şu ki, operasyon sırasında bazı nesneler diğerlerini kontrol edebilir. Örneğin, bir nesnenin alt nesneleri varsa, geometri değiştiğinde, alt nesnelerinin geometrilerini otomatik olarak yeniden oluşturabilir. Bunun gerçekleşmesi için, pencere öğesi arasında bir bağlantı - bir "yönetim" bağlantısı kurulur. Her nesnenin bir veya daha fazla "yönetilen" alt nesnesi olabilir.

    Xt kullanan bir programın pencere öğesi ve X Penceresi ile etkileşime girmesi için üç mekanizma vardır.

    * geri çağırmak

    Prosedürler ("geri arama prosedürleri"). Herhangi bir sınıf için, kendisine ait nesnelerin yanıt vermesi gereken bir dizi eylem tanımlanır. Örneğin, herhangi bir sınıf için, parçacığın yok edilmesi için bir tepki sağlanır. Bir eylem gerçekleştirildiğinde, standart bir Xt işlevi veya program tarafından sağlanan bir veya daha fazla rutin çağrılır. Bu tür işlevlere geri arama prosedürleri veya basitçe geri arama denir.

    *Aksiyon

    -prosedürler. Program, Xt'den gelen şu veya bu karmaşık olaya (olaylar grubu) bir tepki emri verebilir. Bir olay olursa, Xt uygun işlevi arar ve çağırır.

    * Etkinlik sahipleri

    - etkinlik sahipleri. Bu yöntem öncekine benzer, ancak daha hızlı ve daha az esnektir. Yalnızca basit (tek) olaylara tepki vermenize izin verir, ancak sıralarına değil.

    Genel programlama şeması

    X'te çalışan programlar, sunucuyla bağlantı kurmak, pencere yöneticisi için gerekli özellikleri ayarlamak ve diğer birçok adım gibi bir dizi standart eylemi gerçekleştirmelidir. Xt kullanılıyorsa, tüm bunlar tek bir prosedürle yapılır - XtInitialize(). Paketin kendisini, X Window kaynak yöneticisini (\term kaynak yöneticisi) başlatır ve diğer gerekli işlemleri gerçekleştirir. XtInitialize() (veya XtAppInitialize()) çağrıları, diğer tüm Xt prosedürleri çağrılarından önce gelmelidir. XtInitialize() tanımlayıcıyı döndürür programın nesne ağacının kökü olarak kullanılabilen shell-widget . Kural olarak, programın sınıfının adı programın kendi adıyla aynıdır, yalnızca büyük harfle başlar. Kaynak yöneticisi Kaynak veritabanında parametrelerini aramak için programın adı ve sınıfı.

    Her program, komut satırında bazı seçenekler belirleyebilir. Xt, bir program başlatılırken iletilebilecek "standart" parametreleri tanımlar. Ek olarak, komut satırı bu uygulamaya özgü standart dışı parametreler içerebilir. XtInitialize() komut satırını tarar ve uygun veri değerlerini veritabanına yerleştirir.

    Başlatma sırasında, uygulamayla ilgili tüm bilgileri depolayan bir yapı olan bir program içeriği de oluşturulur. Bağlam, programı işletim sistemindeki çeşitli değişikliklerin etkisinden korumayı amaçlamaktadır. XtInitialize() bazı standart bağlamlar (varsayılan içerik) oluşturur, ancak yine de, X'in dördüncü sürümünden başlayarak, programın her bir ayrı örneği için Xt açısından ayrı bir "kişisel" bağlam oluşturulması önerilir. , XtAppInitialize() prosedürü çağrısını kullanmalısınız ( XtInitialize() yerine). Burada, Xt'deki bir uygulamanın her zamanki gibi bir değil birden çok nesneye sahip olabileceğine dikkat edin. Üst düzey".

    Başlatmadan sonraki aşama, programın kontrol öğelerini oluşturma, aralarındaki ilişkiyi tanımlama, çeşitli olaylara tepkileri ayarlama (olay işleyicilerin ve diğer benzer nesnelerin kaydı) aşamasıdır. Bu birçok şekilde yapılabilir, geleneksel yol, örneğin, bir nesne oluşturmak için XtCreateWidget() prosedürünü, nesnenin kontrolünü ebeveynine aktarmak için XtManageChild() prosedürünü, kaydetmek için XtAddEventHandler() prosedürünü kullanmaktır. widget için olay işleyicileri vb. ve benzeri.

    Tüm program nesneleri çalışmaya hazır olduktan sonra, XtRealizeWidget() prosedürü ile bunların grafik temsilleri (örneğin, bu widget'lara karşılık gelen pencereler) ekranda gösterilir.

    Bir sonraki aşama, ana döngüdür - olayları alma ve gönderme döngüsü. XtMainLoop() prosedürünü (XtAppMainLoop()) çağırarak uygulanır.

    Yalnızca çekirdek X kitaplığı (Xlib) yordamlarını kullanan bir program, gelen her olayı (örneğin, XNextEvent() veya XPeekEvent() gibi açık bir çağrıyla olay kuyruğundan alarak) dikkate almalı ve buna göre tepki vermelidir. Görevin birkaç penceresi varsa, herhangi bir eylemi gerçekleştirmeden önce, olayın hangi pencerelerde meydana geldiğini ve bu olayın hangi hiyerarşi düzeyinde işleneceğini belirlemek gerekir (bu nesne veya üst öğesi bu olayı işleyecek mi? ). Bütün bunlar oldukça sıkıcı.

    Xt tüm rutin işleri halleder. XtMainLoop() sonraki olayı alır ve amaçlanan pencereyi belirler. İlgili widget pencerede bulunur. İkincisi için, meydana gelen bir olaya yanıt vermek üzere kaydedilecek bir olay işleyici, eylem yordamı veya geri arama tanımlanır. Herhangi bir ağ varsa, çağrılır. Yukarıda açıklanan mekanizma olay gönderme olarak adlandırılır.

    XtMainLoop() (XtAppMainLoop()), pencere yöneticisi tarafından istendiğinde programı otomatik olarak sonlandırır.

    Xt nesneleri, sınıflandırılmaları

    Xt, programlar tarafından kullanıcıyla ve genel olarak dış dünyanın geri kalanıyla iletişim kurmak için kullanılan nesneler oluşturmak için bir dizi olanak sağlar.

    Her program tarafından oluşturulan widget, bir sınıfın veya diğerinin temsilcisidir. OSF/Motif, Athena, Tk/tcl, Open Look vb. Xt ve buna dayalı paketler, çok sayıda bu tür sınıflar. Standart kitaplıklarda sağlanmayan yeni parçacıklar oluşturmak, genellikle zaman alan bir görev olan karşılık gelen sınıfın oluşturulmasını (tanımlanmasını) da gerektirir.

    Her sınıfın, tüm örnekleri için ortak olan bir dizi sabit özelliği vardır (örneğin, bir geri arama prosedürleri listesi). Bu özelliklerin nesnelerin kendileri için değerleri farklı olabilir.

    Tüm Xt sınıfları bir hiyerarşi oluşturur. B sınıfı, hiyerarşinin tepesine D sınıfından daha yakınsa, B, D'nin temel sınıfı olarak adlandırılır ve D, B'nin türetilmiş sınıfı (veya alt sınıfı) olarak adlandırılır.

    Alt sınıflar, tüm temel sınıflarının özelliklerini devralır. Bu, bir sınıfın örneğinin yalnızca kendi sınıfının özelliklerine değil, aynı zamanda tüm temel sınıfların özelliklerine sahip olduğu anlamına gelir.

    Programlarda, her sınıf, karşılık gelen veri yapısına işaret eden bir değişkenle tanımlanır. Bu değişkene sınıf işaretçisi denir. Bu yapının verileri, Xt başlatıldığında doldurulur.

    Ana widget sınıfları:

    nesne. Tüm nesnelerin ağacının kökü olarak kullanılan soyut bir sınıf (kendi nesnesini üretmeyen bir sınıf). Tek bir alt sınıf içerir:

    RectObj. Çeşitli nesne türlerinin (örneğin, penceresi olmayan nesneler için) çalışması için gerekli bazı genel özellikleri tanımlamak için kullanılan soyut bir sınıf. Bir alt sınıf içerir:

    çekirdek. Pencereleri olan pencere öğesi sınıfları ağacının kökü. Bu sınıf, widget penceresinin boyutu ve ekrandaki konumu gibi tüm nesnelerde ortak olan özellikleri tanımlar. Bir alt sınıf içerir:

    Kompozit. Bu sınıfa ait widget'lar diğer nesnelerin ebeveyni olabilir. Composite sınıfının örnekleri, alt nesneleri için aşağıdaki davranışları tanımlar:

    * "çocuk" widget'ının konumunu belirli kısıtlamalara göre ayarlar;

    * yok edildiğinde, alt nesneler tarafından kullanılan belleği serbest bırakır (Composite sınıf parçacığı yok edildiğinde, önce tüm "alt öğeleri" yok edilir);

    * çocuk widget'larının pencerelerinin ekranındaki görünümünü kontrol eder;

    * nesneler arasında giriş odağının transferini kontrol eder.

    Composite sınıfı alt sınıfları içerir:

    Kısıtlama. Bu sınıf, temel sınıfın bir başka uzantısıdır. Örnekleri, çocuklarının boyutunu ve konumunu kontrol etme konusunda ek yeteneğe sahiptir. Örneğin, alt nesneler özel bir sıraya yerleştirilebilir: bir satıra, bir sütuna vb.

    Kabuk. Bu, pencere yöneticisi ile etkileşime geçmek için tasarlanmış özel bir sınıftır. bu sınıftan widget'ın yalnızca bir çocuğu olabilir. Shell sınıfı, alt sınıfları içerir:

    Shell'i geçersiz kıl. Bu, Shell sınıfının önemli bir alt sınıfıdır. Bu sınıfın bir widget penceresi için override_redirect özelliği True olarak ayarlanmıştır, yani. pencere yöneticisinin bunun üzerinde kontrolü yoktur. Kural olarak, bu sınıftaki nesnelerin pencereleri, pencere yöneticisi tarafından eklenen aksesuarlara (başlık, çerçeve, standart düğmeler) sahip değildir ve esas olarak çeşitli türlerde menüler oluşturmak için kullanılır.

    WShell. Bu, pencere yöneticisi ile etkileşim için gerekli ek alanları içeren Shell sınıfının özel bir alt sınıfıdır. içerir:

    SatıcıShell. Bu sınıfın amacı, özel pencere yöneticileriyle etkileşimi etkinleştirmektir. Bu sınıf alt sınıfları içerir:

    TopLevelShell. Bu sınıfın widget'ları genellikle programın nesne ağacının kabuk nesneleri olarak kullanılır. O içerir:

    Uygulama Kabuğu. Bir program, kural olarak, ApplicationShell sınıfına ait olan yalnızca bir örneğe sahip olabilir.

    Geçici Kabuk. Bu sınıf, öncekinden yalnızca pencere yöneticisiyle etkileşime girme biçiminde farklıdır. Bu sınıftaki widget'lar simge durumuna küçültülemez (simgeye dönüştürülemez). Ancak, TransientShell sınıfındaki bir nesnenin ebeveyni bir simgeye dönüşürse, widget penceresi ekrandan kaldırılır. TransientShell sınıfı, iletişim kutuları oluşturmak için kullanılır.

    Widget sınıflarının her biri ve dolayısıyla temelinde oluşturulan nesneler, oldukça fazla sayıda parametreye sahiptir. Xt açısından bunlara "kaynaklar" denir. Xt, onlarla çalışmak için çok çeşitli araçlar sağlar.

    Ek özellikler

    Xt, dosyalarla (ve genel olarak harici aygıtlarla) eşzamansız modda çalışmak için bir mekanizma sağlar. Bir uygulama, veri hazır olduğunda veya bir okuma/yazma hatası oluştuğunda çağrılacak bir prosedürü kaydedebilir.

    Xt, uygulamaya belirli eylemleri belirli aralıklarla gerçekleştirme yeteneği verir. Örneğin, belirli bir pencerede vb. ekranda geçerli saati periyodik olarak görüntüleyin. Bu tür amaçlar için, özel bir Xt mekanizması kullanılır - bir zamanlayıcı. Program tarafından belirtilen özel bir işlevin belirli bir zaman aralığından sonra çağrılmasını sağlar.

    Xt, olay sırası boşken bazı eylemleri gerçekleştirme yeteneği sağlar. Bu, olay sırası boşsa Xt'in çağıracağı özel bir "çalışma" prosedürünün kaydedilmesiyle yapılır. Bu tür işlevler genellikle çok kısa bir süre içinde çeşitli eylemleri ve hesaplamaları gerçekleştirmek için kullanılır.

    Her uygulama, gerekirse, olayları alma ve gönderme (işleme) olağan döngüsünü değiştirebilir - Xt, olay kuyruğuyla çalışmak için bir dizi prosedür sağlar.

    Xt, olayların ve eylemlerin bağımlılıklarını girmenize izin veren bir hızlandırıcı (hızlandırıcı) mekanizmasına sahiptir. Hızlandırıcılar, bir pencere öğesinde meydana gelen bir olayın (veya olaylar grubunun) başka bir nesnede karşılık gelen eylem prosedürüne bir çağrı başlatması farkıyla, eylem prosedürlerine benzer.

    Xt, widget pencereleriyle çalışmanın çeşitli yollarını destekler. Böylece program, Xt tarafından sağlanan rutinleri kullanarak pencereyi gösterebilir, bunun için şu veya bu çalışma modunu ayarlayabilir ve gereksiz hale geldiğinde pencereyi kapatabilir. Bu prosedürler esas olarak açılır menüler ve diyaloglar oluşturmak için kullanılır. Kural olarak, tüm widget setlerinin (örn. OSF/Motif), menüler ve diyaloglar oluşturmak için kendi çok daha uygun prosedürleri vardır.

    Xt Eklentileri Şu anda Xt, X konsorsiyumu tarafından katı bir şekilde standardize edilmiştir, ancak daha yüksek seviyeli standartlar yoktur. Popüler olanlar:

    *OSF/Motif Araç Seti;

    * Athena Widget Seti;

    * AÇIK GÖRÜNÜM Temel Araç Kiti;

    * Görüşmeler;

    *Tk/tcl.

    En yaygın ve neredeyse fiili standart muhtemelen OSF/Motif olarak düşünülmelidir.

    Athena

    Athena Widget Seti ("widget seti"), standart X dağıtımının bir parçası olarak X konsorsiyumu tarafından sağlanmaktadır. Athena, MIT'deki Athena projesi sırasında X Pencere Sistemi ile sonuçlanan temel uygulamalar ve yardımcı programlar üzerinde yapılan çalışmalardan yaratılmıştır.

    Athena başlangıçta "düz" grafiklere sahipti - tüm düğmeler, menüler ve diğer arayüz öğelerinin gölgesi yoktu, yani. düzdü. Yaklaşık bir yıl önce, bu eksikliği gideren Athena Widget'larının bir çeşidi olan AW3d piyasaya sürüldü.

    Motif

    Open Software Foundation Motif (OSF/Motif), bir pencere yöneticisi, çeşitli yardımcı işlemleri gerçekleştirmek için bir dizi yardımcı program ve Toolkit Intrinsics üzerinde oluşturulmuş bir nesne kitaplığı içeren bir pakettir.

    Motif, tüm Xt sınıflarını ve dolayısıyla bu sınıfların kaynaklarını destekler, ancak bir nesnenin kaynağının adı ve sınıfı, sırasıyla XmN ve XmC ön ekleriyle gösterilen sabitlerle temsil edilir. Kaynak türünü kaydetmek için, XmR ön ekine sahip sabitler kullanılır (Xt'de benimsenen XtR yerine).

    Motif, Xt tarafından sağlanan nesne sınıfları kümesini genişletir. Özellikle Motif, menüler, kaydırma çubukları, tıklanabilir düğmeler, öğeleri düzenleme vb. oluşturmanıza izin veren oldukça geniş bir sınıf kümesini destekler.

    Ayrıca Motif, gadget adı verilen özel bir nesne sınıfı sağlar - Motif'te RectObj sınıfının bir alt sınıfı olan ayrı bir XmGadget sınıfı oluştururlar. Arayüz öğeleri oluşturmak için de kullanılabilirler, ancak kendi pencerelerine sahip olmama özelliğine sahiptirler. Gadget'lar çizmek için ebeveynlerinin penceresini kullanır.

    Her pencere öğesi sınıfı, kendisine özgü hem kalıtsal hem de ek kaynakların oldukça geniş bir seçimine sahiptir. Nesnelerin arka plan rengi, ekrandaki konumu, görüntülenen metnin yazı tipi gibi önemli özelliklerini kontrol etmenize olanak tanırlar.

    Motif sınıflarından bazıları pencere öğesi örnekleri oluşturmak için kullanılmaz (bu tür sınıflara nesne yönelimli programlama terminolojisinde soyut sınıflar denir). Çeşitli pencere öğesi türlerinin çalışması için gereken en yaygın öznitelikleri ve yöntemleri içerirler.

    Motif'in iki ana nesne alt sınıfı vardır: XmPrimitive ve XmManager (XmGadget sınıfından daha önce bahsedilmişti). Bu sınıfların her ikisi de soyuttur. İlki Core sınıfından miras alınır ve başka nesnelere sahip olmayan nesne sınıfları için temel olarak kullanılır. Örnekler, tıklanabilir düğmeler, listeler vb. XmManager sınıfı, Constraint sınıfından türetilir ve alt nesnelere sahip olabilen ve bunları yönetebilen nesneler oluşturmak için kullanılır.

    nesne sınıflandırması

    XmGadget sınıfı. Normal Motif nesne sınıfları (widget) başlatılırken ilgili pencere de oluşturulur. Program çok sayıda widget kullanıyorsa, bu, uygulamada önemli bir yavaşlamaya yol açar. Hem pencereler oluşturmak hem de onlarla daha fazla çalışmak için zaman harcanır. Ancak her nesne için ayrı bir pencereye sahip olmanın gerekli olmadığını görmek kolaydır. Etiketler, düğmeler ve diğer pek çok pencere öğesi, pencere çizmek için üst nesnelerini başarıyla kullanabilir. Pencere yok - sunucuyla bir kez daha bağlantı kurmaya gerek yok, performans artıyor ve ek bellek boşa harcanmıyor.

    Bu fikri uygulamaya koyan Motif geliştiricileri, bazı nesne sınıflarını çoğaltarak pencereli ve penceresiz olmak üzere iki versiyon oluşturdular. Pencereleri olmayan nesnelerin sürümleri, hiyerarşilerini soyut sınıftan (XmGadget) yönlendirir ve aynı genel ada sahiptirler. Bu özel nesne sınıfı, özelliklerini nesne geometrisini yönetmek için temel mekanizmaları içine alan soyut bir sınıf olan RectObj sınıfından alır.

    Gadget'ların kendi pencereleri olmamasına ek olarak, bunlara başka kısıtlamalar da getirilir. Bu nedenle, onlar için olay işleyicileri (olay işleyici), çeviri tabloları tanımlamak imkansızdır. Ayrıca gadget'ın alt nesneleri olamaz. Aksi takdirde, gadget'ın ve ilgili widget'ın işlevselliği aynıdır, bu nedenle onları ayrı ayrı açıklamayacağız, yalnızca listeleyeceğiz.

    XmGadget sınıfı alt sınıfları içerir:

    *XmArrowButtonGadget'ı.

    * XmLabelGadget.\hfil

    *XmPushButtonGadget'ı.

    *XmToggleButtonGadget'ı.

    *XmCascadeButtonGadget'ı.

    *XmSeparator Gadget'ı.

    XmPrimitive sınıfı. Bu soyut sınıf şunları içerir:

    XmOk Düğmesi. Sınıfın bir örneği, üzerine yön okunun çizildiği bir düğmedir. Düğme fare veya klavye ile tıklanabilir. Kontrol öğesinin kenarlığı bir gölgeye sahip olabilir, nesnenin serbest ("bastırılmış") ve basılmış olabileceği farklı durumları göstermek için kullanılır.

    Xm Etiketi. Bu sınıfın temsilcileri (etiketler), en basit Motif nesnelerinden biridir. Etiketler, bilgileri görüntülemek için tasarlanmıştır: metin veya resimler (bit (piksel) haritalar).

    XmPushButton. Bu sınıfın üyeleri, içine bir metin satırı çizilebilen dikdörtgen tıklanabilir düğmelerdir.

    Örneğin, imleç nesnenin üzerindeyken farenin sol düğmesine basılarak bir nesne seçilirse, widget'ın kenarlığının rengi değişir ve bu da bir tıklama efekti oluşturur. Düğme bırakıldığında kenarlık rengi geri yüklenir. Klavyeden böyle bir widget'a da tıklayabilirsiniz - bunun için giriş odağını nesneye aktarmanız ve "boşluk" tuşuna (genellikle) basmanız gerekir.

    XmDrawnButton. Bu sınıfın nesneleri, metin değil, rastgele bir resim (piksel haritası) çizmeleri arasındaki tek farkla tıklanabilir düğmelere benzer.

    XmToggleButton. Bu sınıfın nesneleri, yanında kural olarak açıklayıcı bir metin bulunan küçük bir düğmeyi temsil eder. Düğme iki durumda olabilir: açık ve kapalı (yani bir anahtardır). Kontrolün görünümündeki bir değişiklikle işaretlenirler.

    Bu sınıfın bir temsilcisi, "onay işaretleri" olarak adlandırılması daha akıllıca olacak sözde "kontrol düğmeleri" (kontrol düğmesi) ve "radyo düğmeleri" (radyo düğmesi) - çok konumlu anahtarlar oluşturmak için kullanılır. İlki, mantıksal parametrelerin ayarlanmasına hizmet eder, örn. iki anlama sahip. İkincisi benzer bir amaca hizmet eder, ancak anlamlar kümesi bu durum sonludur ve ikiden fazla eleman içerir. Bu durumda, XmToggleButton türündeki bir nesnenin grafik gösteriminin biçimi, onun "tik" veya "radyo" düğmesi olarak kullanılmasına bağlıdır.

    Tipik olarak, XmToggleButton sınıfının pencere öğeleri, sırasıyla bir onay kutusu ve bir radyo kutusu adı verilen yapılarda birleştirilir. Bu bloklar, sırasıyla, aşağıda açıklanan XmRowColumn sınıfının nesnelerinde yapılan değişiklikleri temsil eder.

    XmCascadeButton. Bu sınıfın nesneleri, tıklanabilir düğmeleri temsil eder ve menüler oluşturulurken kullanılır. Bir nesneye tıkladığınızda, bir sonraki seviyenin alt menüsü görünür.

    xmllist. Bu sınıfın temsilcileri en ilginç Motif nesnelerinden bazılarıdır. Dizilerin bir listesini görüntülemek ve kullanıcıya listenin öğeleriyle çeşitli eylemler gerçekleştirme yeteneği vermek için tasarlanmıştır. Kullanıcı, bu nesnede bulunan satırlardan birini veya daha fazlasını seçebilir ve bunlar vurgulanır. Ek olarak, listede giriş odağı varsa, öğelerinden biri noktalı bir çerçeveyle vurgulanır. Bu çerçeveye liste imleci denir.

    XmScrollBar. Bu sınıfın nesneleri - kaydırma çubukları (kaydırma çubukları), kural olarak, liste (XmList), metin (XmText) ve diğerleri gibi diğer nesnelerle birlikte kullanılır. Kaydırma çubuğu, içinde sunulan bilgiler (liste, metin, resim vb.) pencerede tam olarak görüntülenemiyorsa, alanı kaydırmak için tasarlanmıştır. XmScrollBar sınıfının nesneleri, kenarlarında ok düğmeleri bulunan bir çubuğu (yatay veya dikey) temsil eder. Bunlardan herhangi birine tıklamak, okla gösterilen yönde kaydırır. Kaydırma çubuğunun tam şeridinde bir kaydırıcı (kaydırıcı) vardır - renkli olarak vurgulanmış bir dikdörtgen. Fare ile "asarsanız" ve "sürüklerseniz", bu, kural olarak, alanın kaydırılmasına da yol açar.

    Xm Ayırıcı. Bu sınıfın nesneleri - ayırıcılar - geliştirmek için kural olarak kullanılır. dış görünüş uygulama pencereleri. Böyle bir pencere öğesi, nesne gruplarını ayıran dikey veya yatay bir şerittir (çizgi). Örneğin, menülerde bazı komutları diğerlerinden ayırmak için, diyaloglarda - bir grup basılan düğmeyi diğer öğelerden vb. ayırmak için ayırıcılar kullanılabilir.

    xmtext. Bu sınıfın nesneleri, bir veya daha fazla metin satırı görüntülemenize izin verir. Çizgiler pencereye sığmıyorsa, görüntü sola-sağa ve yukarı-aşağı kaydırılabilir. Metin düzenlenebilir - uygun nesne kaynakları ayarlanarak düzenleme modu değiştirilebilir.

    Motif, bu sınıfın widget'ıyla çok çeşitli işlemleri gerçekleştirmenize izin veren bir dizi uygun prosedür sağlar: verileri alın ve değiştirin, verilerin seçilen bölümünü sistem panosuna (panoya) kopyalayın, vb.

    XmTextField. Bu sınıfın nesneleri, bir metin satırını görüntülemenize ve düzenlemenize izin verir.

    XmManager sınıfı. Bu sınıf soyuttur, yani nesneleri oluşturmak için kullanılmaz. Diğer nesneleri manipüle edebilen pencere öğesi sınıfları oluşturmak için gereken temel parametreleri tanımlar. Bu kaynaklar, alt pencere öğelerini düzgün bir şekilde işlemek ve girdi odağını nasıl elde edeceklerini kontrol etmek için gereklidir.

    XmManager sınıfı şunları içerir:

    XmBülten Tahtası. Bu sınıfın nesneleri, pencereye keyfi bir şekilde yerleştirilmiş alt nesnelere sahip olabilir. Alt parçacıkların pencere koordinatları, kaynağı bir XmBulletinBoard sınıf nesnesinin penceresinin sol üst köşesinde bulunan bir koordinat sisteminde ölçülür.

    Örneğin fare ile bir nesnenin boyutunu değiştirirken, alt nesnelerin ilk konumları ya değişmez ya da karşılıklı kesişmeyi önleyecek şekilde hareket ettirilir. Widget penceresi küçülürse, alt nesnelerin bazı bölümleri görünmez hale gelebilir.

    XmBulletinBoard sınıfı şunları içerir:

    Xform. Bu sınıftaki nesnelerin (formlar) ayırt edici bir özelliği, hem formun kendisi ile alt parçacık arasında hem de alt nesnelerin kendileri arasında bağlantılar kurarak alt nesnelerinin konumunu kontrol etme yeteneğidir.

    Her alt parçacığın sol, sağ, alt veya üst kenarının neye sabitlendiğini belirtebilirsiniz. Dolayısıyla, alt nesnenin sol ve sağ kenarları formun sağ kenarına bağlanırsa, onlardan bu kenara olan mesafe her zaman aynı kalacaktır. Formun boyutu küçülürse, alt nesne sola, boyut artarsa ​​sağa hareket eder. Bir alt nesneyi diğerine bağlayabilirsiniz. Ardından, widget'ın eklendiği alt nesnenin konumu değiştirildiğinde, eklenen nesne aralarındaki mesafe korunacak şekilde hareket edecektir.

    Bir formu yeniden boyutlandırırken, alt nesneleri arasındaki tüm ilişkiler korunur.

    XmSelectionBox. Bu sınıfın nesneleri ("seçim kutuları"), bileşik pencere öğesinin bir örneğini temsil eder ve kullanıcının istenen öğeyi seçebileceği kaydırılabilir bir listenin yanı sıra listede seçilen öğenin olduğu bir metin alanı (bir XmTextField nesnesi) içerir. görüntülenir. Kullanıcı yapılan seçimi düzenleyebilir. Liste kutusu ve metin alanı, XmLabel sınıfının karşılık gelen pencere öğeleri kullanılarak ayarlanan açıklayıcı etiketlere sahip olabilir. XmSelectionBox sınıf nesnesi ayrıca üç düğme (XmPushButton nesneleri) içerir. Varsayılan olarak "Tamam", "İptal" ve "Yardım" olarak etiketlenirler. Ve son olarak, bir öğe daha var - varsayılan olarak "Uygula" adını taşıyan tıklanabilir düğme. Bu alt nesne başlangıçta oluşturulur ancak yönetilen pencere öğeleri listesine dahil edilmez.

    Kullanıcı, seçim bloğunu kullanarak ihtiyaç duyduğu alt diziyi listede belirleyebilir veya metin alanına girebilir. Ayarlar "Tamam" düğmesine basılarak onaylanır.

    XmSelectionBox sınıfı şunları içerir:

    XmCommand. Bu sınıfın nesneleri, kullanıcının önceden girilmiş olan komutların bir listesini kullanarak veya widget'ta bunun için özel olarak sağlanan bir metin alanına bir komut girerek istenen komutu seçmesine izin verir.

    XmFileSelection. Bu sınıfın nesneleri, farklı dizinlerin mevcut içeriğini görüntülemenize ve belirli bir dosyayı seçmenize izin verir.

    Bu sınıfın nesneleri şu öğeleri içerir:

    * 2 metin alanı: "Filtre" ve "Seçim" (XmNextField sınıfındaki nesneler);

    * 2 liste: "Dizinler" ve "Dosyalar" (XmList sınıfının nesneleri);

    * 4 düğme: "Tamam", "Filtrele", "İptal" ve "Yardım" (XmPushButton sınıfındaki nesneler);

    "Filtre" metin alanı, bu alanda belirtilen koşulu karşılayan tüm dosya kümesinden belirli bir alt kümeyi seçmek için bir maske (şablon) ayarlar - şablonla eşleşir - "Dosyalar" listesinde gösterilen bu alt kümedir. "Dizinler" listesi, geçerli dizinin alt dizinlerini görüntüler. "Seçim" metin alanı, "Dosyalar" listesinde seçilen dosyayı (adı) görüntüler ve aynı metin alanına kullanıcı, ihtiyaç duyduğu dosyanın tam adını manuel olarak girebilir. Dört düğme, çeşitli eylemleri gerçekleştirmek için kullanılır:

    Tamam - belirtilen dosyayı seçin;

    Filtre - mevcut maskeye göre "Dosyalar" metin alanında görüntülenen dosya listesinin güncellenmesi;

    İptal - widget penceresini kapatır, dosya seçimi yapılmaz;

    Yardım - yardım çağrısı.

    XmMessageBox. Bu sınıfın nesneleri, programın çalışması sırasında ortaya çıkan mesajları kullanıcıya vermek için tasarlanmıştır. Bu widget bileşiktir. Bir metin satırının (mesaj) görüntülendiği bir alana ve mesaj türünü karakterize eden özel bir simgeye sahiptir. Ek olarak, nesnenin basılabilir üç düğmesi vardır. Varsayılan olarak "Tamam", "İptal" ve "Yardım" olarak etiketlenirler.

    XmDrawingAlan. Bu sınıfın nesneleri, programa bilgi çizmek ve görüntülemek için bir pencere sağlar. Sınıfın kendisi, grafikleri görüntülemek için doğrudan kullanılabilecek parametreler sağlamaz. Ancak bu sınıfta bulunan geri arama prosedürlerinin listeleri, pencere öğesi penceresini yeniden çizme ihtiyacı ve giriş odağı alma hakkında bildirimler almanızı sağlar.

    XmFrame. Bu sınıftaki nesneler, bazı nesneleri bir çerçeve ile çevreleyerek diğerlerinden ayırmak için kullanılır. Bu sınıfa ait parçacığın özelliği, yalnızca bir alt nesneye sahip olabilmeleri ve bunları yönetebilmeleridir.

    XmPanedWindow. Bu sınıfın nesneleri, farklı pencere öğelerini birleştirebilir. Alt nesneler birbirinden ayrılır ve aralarına kanat adı verilen özel bir öğe yerleştirilir. Küçük bir kareye benziyor ve alt widget'ları yeniden boyutlandırmak için kullanılıyor. Dolayısıyla, XmPanedWindow sınıfından bir nesnenin iki alt nesnesi varsa, şunları yapabilirsiniz: kanadı fareyle "kancalayın" ve doğru yönde (aşağı-yukarı veya sol-sağ) "sürükleyin" - boylamasına boyut ise (kanadın "çekildiği" yön boyunca boyutu) bir alt nesne diğerinin "pahasına" artacaktır (diğerinin boyutu azalacaktır), her iki alt nesnenin enine boyutları korunacaktır . XmPanedWindow sınıfındaki bir nesnenin "enine" boyutu, alt nesnelerinin maksimum benzer boyutuna göre belirlenir.

    XmRowColumn. Bu sınıfın nesneleri, farklı pencere öğelerini birleştirebilir. Alt nesneler, bir matris biçiminde - belirli bir sırada düzenlenir. widget sınıfı XmRowColumn, aşağıdaki nesneleri oluşturmak için temel oluşturur:

    onay kutusu - "kontrol edilebilir düğmeler bloğu" (yani, XmToggleButton sınıfının veya XmToggleButtonGadget sınıfının nesneleri); "blok"ta bulunan düğmeler arasından aynı anda birkaç tanesi ("açık") seçilebilir;

    radyo kutusu - "radyo düğmeleri bloğu" (yani, XmToggleButton veya XmToggleButtonGadget nesneleri); "blok"ta bulunan düğmeler arasından aynı anda yalnızca biri seçilebilir ("etkin");

    açılır menü - "açılır menü" - üst düzey menüde (menü çubuğu) bir düğme seçildikten sonra görünen bir alt menü penceresi; menü öğeleri dikey olarak düzenlenir;

    seçenek menüsü - ilgili menüye sahip düğme; düğmeye basıldığında, bir parametre değerinin seçildiği bir menü penceresi görünür; menü öğeleri dikey olarak düzenlenir;

    açılır menü - kural olarak üçüncü fare düğmesine basılarak çağrılan "açılır menü"; menü penceresi, imlecinin bulunduğu yerde görünür; menü öğeleri dikey olarak düzenlenir;

    menü çubuğu - çeşitli alt menüleri (açılır menü) çağırmak için kullanılan bir dizi düğme (XmCascadeButton veya XmCascadeButtonGadget sınıfı nesneleri) içeren üst düzey menü; menü öğeleri yatay olarak düzenlenmiştir.

    XmScale. Bu sınıfın bir nesnesi, kullanıcının belirtilen aralıktan nesneyle ilişkili parametrenin değerini seçebileceği bir sabitleme sürgüsü (kaydırıcı) içeren dikdörtgen bir alandır.

    XmScrolledWindow. Bu sınıfın bir nesnesi, bazı bilgileri (metin, resim, liste) görüntüleme ve görüntüleme yeteneği sağlar. Böyle bir pencere öğesi, kural olarak, görüntülenmesi amaçlanan verilerin bulunduğu bir alt nesne içerir (bu, XmText sınıfının bir nesnesi, XmDrawingArea, vb. olabilir). Daha fazlası için rahat görüntüleme veri, yatay ve dikey kaydırma çubukları kullanılabilir.

    Bu sınıf bir alt sınıf içerir

    XmMainWindow. Bu sınıfın nesneleri, genellikle aşağıdaki parçalardan oluşan ayrı bir arayüz bileşenini temsil eder:

    * üst düzey menü,

    * komut penceresi,

    * "Çalışma alanı,

    * mesaj Kutusu,

    * ve iki kaydırma çubuğu (yatay ve dikey).

    Alt nesneler ayırıcılarla ayrılabilir.

    XmMenuShell ve XmDialogShell sınıfları. Motif, çeşitli menüler oluşturmak için XmMenuShell nesne sınıfını sağlar. Bu sınıf, OverrideShell sınıfından (Xt'den) miras alır.

    Xt'yi açıklarken daha önce belirtildiği gibi, TransientShell sınıfı, bir yandan pencere yöneticisiyle doğrudan iletişim kuran ve diğer yandan onları sıradan üst düzey pencerelerden ayıran özelliklere sahip program nesneleri oluşturmak için kullanılır. Bu özelliklerden en önemlisi, TransientShell sınıfının widget'ının küçültülmemesidir. Ancak ebeveyn bir simgeye dönüşürse ekrandan kaldırılırlar. Bu tür pencere öğesi genellikle programın yardımcı pencerelerini oluşturmak için kullanılır.

    Motif, TransientShell sınıfının belirtilen özelliklerini alır ve bunları türetilmiş bir XmDialogShell sınıfına genişletir. İkincisi, iletişim kutusunun kabuk nesnesi olarak hizmet eder.

    Motif'teki iletişim kutusunun yapısı aşağıdaki gibi gösterilebilir:

    XmDialogShell sınıf nesnesi

    XmBulletinBoard veya XmForm gibi bir XmManager alt sınıfı nesnesi

    Çeşitli kontrol öğeleri: düğmeler, metin giriş alanları vb.

    Kitaplık, açıklanan yapının oluşturulmasını kolaylaştıran bir dizi prosedüre sahiptir.

    Diyaloglar

    Belirtildiği gibi, Motif'teki iletişim kutusunun yapısı şu şekildedir: önce XmDialogShell sınıfının bir nesnesi vardır, bu daha sonra XmManager sınıfının alt sınıflarından birinin widget'ını içerir, bu nesne çeşitli nesneleri barındırmak için kullanılır.

    Kitaplık, diyalog oluşturmak için özel prosedürler sağlar. Bunlar, XmDialogShell sınıf nesnesinin alt öğesi olan pencere öğesi türüne göre ayırt edilir.

    Metin çıktısı

    Kitaplık, metin bilgilerini görüntülemek için kullanılan oldukça fazla sayıda widget'a sahiptir. Bunlar, alt sınıflara sahip XmLabel, XmText vb.'dir. XmNfontlist kaynağı, çizgi çizerken kullanılabilecek olası yazı tiplerini belirtmek için kullanılır. XmFontlist türündedir. Değeri, bir dizi "font"/"font tag" çiftidir.

    Etiketler (etiketler), programları kullanıcı tarafından belirtilen belirli yazı tiplerinden bağımsız hale getirmek için tasarlanmıştır. Bu şu şekilde yapılır: uygulama, metin satırlarıyla çalışan tüm işlevlerde yazı tiplerinin kendileri değil, etiketleri olacak şekilde oluşturulur. Görev derlendiğinde ve başlatıldığında, etiketler ve belirli yazı tipleri arasındaki yazışmalar belirlenir. İkincisi çizim için kullanılır.

    Motif, yalnızca tek bir yazı tipinde görüntülenen metin satırlarıyla çalışmak için araçlara sahip değildir, aynı zamanda "bileşik çizgiler" - örn. birçok yazı tipi kullanan metin satırları. Bu tür dizileri oluşturmak, onlarla çalışmak ve onları normal, "tek yazı tipi" dizilere dönüştürmek için bir dizi araç vardır.

    Görüntülerle çalışma

    Motif'in kendisi görüntülerle çalışır ve onları XImage yapısı kullanılarak belirtilen en basit bitmap (bitmap) olan dahili bir biçimde temsil eder.

    Giriş odak kontrolü

    Motif, giriş odağını geçmek için iki modeli destekler. İlki örtüktür (işaretçi): odak, fare imlecinin hareket ettiği pencere öğesine verilir. İkinci model açıktır: odağı aktarmak için fare imlecini widget penceresine getirin ve sol fare düğmesine basın. Bir widget veya gadget giriş odağı aldığında, kenarlığı vurgulanır.

    Girdi odağını geçirme ve alma modellerine ek olarak, girdi odağını bir pencere öğesinden diğerine geçirmek için bir mekanizma da vardır. Nesneler gruplar halinde birleştirilebilir - bu, karşılık gelen kaynakların gerekli değerleri ayarlanarak yapılabilir veya sisteme verilebilir. İkinci durumda, Motif yerleşik kuralları kullanarak parçacığı otomatik olarak bağlar. Örneğin, XmMessageBox sınıfının bir nesnesi üç grup içerir: biri "ana" iletişim nesnesi (XmForm sınıfı), ikincisi, mesajın kullanıcıya sunulduğu "etiket", üçüncüsü düğmelerdir. basılacak.

    Girdi odağı hem bir nesneden (gruptaki) diğerine hem de gruptan gruba aktarılır.

    Bir grup içinde odak aktarımı, ok tuşları kullanılarak ve gruptan gruba - sekme tuşu kullanılarak yapılır (bu nedenle grupların kendilerine Sekme grupları denir). Odak bir gruba aktarıldığında, içindeki giriş odağı odağı alabilen ilk nesneye aktarılır (ilgili kaynağın uygun değeri ayarlanarak bir nesnenin odak alması engellenebilir). Girdi odağının bir grup içinde iletilme sırası, pencere öğelerinin oluşturulma sırası ile aynıdır. Bu durumda, genellikle tuş kombinasyonu odağı ters yönde hareket ettirir.

    Motif ayrıca giriş odağını kontrol etmek için kullanılabilecek bir dizi prosedür sağlar.

    Lesstif Daha yakın bir zamanda, Motif'in tamamen uyumlu bir ücretsiz analogu piyasaya sürüldü. Buna Lesstif denir. Kaynak biçiminde ücretsiz olarak elde edilebilir ve İnternet'teki çeşitli platformlar için derlenebilir.

    tk/tcl

    Tcl - oku: - şu anlama gelir: "araç komut dili" (araçsal komut dili). İki bölümden oluşur: gerçek dil ve kitaplık.

    tcl dili basit bir sözdizimine sahiptir ve programlaması kolaydır. Orijinal haliyle, tcl bir tercümandır. Yetenekli bir programcıya yalnızca son uygulamaları değil, aynı zamanda tcl dilinin kendi uzantısını geliştirmek, kendi stilinizi yaratmak ve sürdürmek için güçlü bir araç sağlayan işlevler veya programlar gibi yeni yapılar oluşturmanıza olanak tanır.

    tcl kitaplığı, uygulama programlarında tcl dil yorumlayıcılarını kullanma olanağı sağlar ve bu nedenle programlarda tcl komut dilinde yazılmış betikleri içerir. Kitaplık, tcl dilinin sözcük çözümleyicisini, yerleşik tcl komutlarını uygulayan işlevleri içerir ve tcl komutlarına özel alt yordamlar (işlev çağrıları) eklemenize izin verir. Bu düzenleme hem C hem de C++ için mümkündür.

    Tk, X Window ortamında grafiksel kullanıcı arabirimleri geliştirmek için Motif uyumlu bir araç setidir. Standart C ve C++ arabirimine ek olarak, tcl komut yorumlayıcı ortamından Tk olanaklarını kullanma yeteneği sağlayan bir tcl arabirimi içerir. Bu, C ve C++'daki standart programlamaya ek olarak, uygulamanın arayüz bölümlerinin tcl dilinde komut dosyaları olarak uygulanabileceği ve bu arabirim bölümlerinin (diyaloglar, ekran düzenleri vb.) tcl komutlarını kullanan son program.

    "Wish" pencereleme ortamı, yalnızca tcl dilinin olanaklarını kullanarak grafiksel kullanıcı arayüzlerine sahip uygulamalar oluşturmanıza olanak tanır.

    Benzer Belgeler

      Programlama sistemleri ve grafik olanakları. "Programlama dilinin grafik özellikleri" konusunun temel okul öğrencileri tarafından etkili bir şekilde özümsenmesini destekleyen bir multimedya kursunun geliştirilmesi (Basic ve Pascal programlama dilleri örneğinde).

      tez, 29.12.2010 eklendi

      Grafik Bileşenleri ekran, sistem nesneleri ve işlevleri. Cihazla kullanıcı etkileşimi araçları sistemi. Grafik kullanıcı arayüzlerinin geçmişi kişisel bilgisayarlar, onların sınıflandırılması. X Pencere Sistemi.

      sunum, 05/22/2012 eklendi

      Programlama ve basit grafik yetenekleri. Görünüm için temel yapılar ve bağımsız değişkenli iki kurucu. Diğer nokta koordinatları ve yenisinin başlatılması. Dikdörtgenin sol üst köşesinin koordinatlarının saklanması ve değiştirilmesi.

      laboratuvar çalışması, 12/01/2011 eklendi

      Vektör bilgisayar grafikleri. Grafik ilkelleri. Pascal programlama dilinin grafik özellikleri. Programlama dili Pascal'da grafik çalışması için yönergeler. Fonksiyon grafiklerinin oluşturulması.

      dönem ödevi, 06/13/2007 eklendi

      VisualC++ (6.0, .NET) kullanılarak Windows işletim sistemi için bir programın geliştirilmesi. Cihazın (elektrikli su ısıtıcısı) çalışmasının yazılım simülasyonunun temellerinin dikkate alınması. Aygıt sınıfları ve grafik arayüzü oluşturma kuralları.

      dönem ödevi, 06/03/2014 eklendi

      Bilgisayar grafikleri. Bir bilgisayarda grafik bilgilerin temsili. Grafik formatları. Grafik düzenleyici. Vektör grafikleri. Corel çizgisi. Programın özellikleri, arayüz. CorelDraw'ın teknolojik yetenekleri ve kullanımı.

      dönem ödevi, 19/05/2007 eklendi

      Dağıtılmış rolü bilgi işlem sistemleri modern problemlerin çözümünde. Paralel programlar geliştirmek için DVM araç sistemi. Resmi bir grafik arabirim modeli oluşturmak için araçlar. DVM sisteminin grafik arabirimi için gereksinimler.

      dönem ödevi, 10/15/2010 eklendi

      Delphi 7 ortamını ve ana grafik yeteneklerini kullanarak programlamanın özü. Otonom olarak derlenmiş bir program modülünün yapısı ve ilkeleri. Bir yay, daire ve elips oluşturmak için grafik prosedürlerle çalışmak için temel teknikler.

      dönem ödevi, 12/16/2011 eklendi

      Bilgisayar grafiklerinin kapsamı. Bilgisayar grafiği türleri. Renk çözünürlüğü ve renk modelleri. Grafik bilgilerinin oluşturulması, görüntülenmesi ve işlenmesi için yazılım. Kelime işlemcilerin, grafik düzenleyicilerin grafik olanakları.

      testi, 06/07/2010 eklendi

      Grafiksel kullanıcı arayüzlerinin evrimi. X Pencere Sistemi Aygıtı ve Pencere Yöneticileri. KDE ve GNOME masaüstü ve uygulamalarının tanımı. Arayüz organizasyonunun temel ilkelerine genel bakış Windows sistemi, uygulama paketinin açıklaması.

    Kural 2: Kullanıcının üzerindeki yükü azaltın

    Kural 3: arayüzü uyumlu hale getirin

    Yönergeler

    Program "Düzenli Başlat Menüsü"

    Çözüm

    Edebiyat

    giriiş

    "Bir tasarımcının altın kuralı, 'Sana yaptıklarını başkalarına asla yapma'dır.

    Tracey Leonard

    Bir kullanıcı arayüzü oluşturma ilkelerini takip etmek neden gereklidir?

    Yazılım, kullanıcının gereksinimleri ve istekleri dikkate alınarak geliştirilmelidir - sistem kullanıcıya uyarlanmalıdır. Bu nedenle tasarım ilkeleri çok önemlidir.

    Bilgisayar kullanıcıları, bilgisayarla çalışırken yeteneklerine güven aşılayan ve yüksek benlik saygısı oluşturan olumlu deneyimler yaşayabilir. Bilgisayarla eylemleri "başarı başarıyı doğurur" olarak nitelendirilebilir. Programla ilgili her olumlu iletişim deneyimi, kullanıcının yazılımla tanışma alanını genişletmesine ve yeterlilik düzeylerini geliştirmesine olanak tanır. İyi bir öğretmen ve ders kitapları gibi iyi tasarlanmış bir arayüz, kullanıcı ve bilgisayar arasında verimli bir etkileşim sağlar. Başarılı arayüzler, bir kişinin kullandığı olağan program çemberinden çıkmasına ve yenilerini keşfetmesine, arayüzlerin ve bilgisayarların işleyişine ilişkin anlayışını derinleştirmesine bile yardımcı olabilir.

    Arayüz tasarım ilkeleri, yazılım tasarımında kullanılabilen üst düzey kavramlar ve temsillerdir. Hangi ilkelerin sisteminiz için en önemli ve kabul edilebilir olduğunu belirlemeniz gerekir.

    Tasarıma başlayarak, uzlaşma arayışında belirleyici olacak en önemli prensibi vurgulamak gerekir. Tüm tasarım ilkelerine uymaya çalışmak, bazı durumlarda kendini haklı çıkarmamasına ve nihai sonucu olumsuz etkilemesine neden olabilir. İlkeler eylem için bir rehberdir.

    Kullanıcı arayüzü tasarımının üç ilkesi şu şekilde formüle edilmiştir:

    1) kullanıcı arayüzü kontrolü;

    2) kullanıcının hafızasındaki yükün azaltılması;

    3) Kullanıcı arabirimi tutarlılığı.

    UI Tasarım İlkelerini Nerede Bulabilirsiniz?

    Hansen, tasarım ilkelerinin ilk listesini sundu. İlkeler şunlardır:

    1) kullanıcıyı tanımak;

    2) ezberlemeyi azaltmak;

    3) operasyonları optimize edin;

    4) hataları düzeltin.

    Birçok büyük işletim sistemi üreticisi, yeni ürünlerini piyasaya sürüyor, ilgili kılavuzları ve talimatları yayınlıyor. Bu yayınlar, arayüz tasarımı yaklaşımının ilkelerini ortaya koymaktadır. Kılavuzlar Apple Computer, Inc. tarafından yayınlanmıştır. (1992), IBM Corporation (1992), Microsoft Corporation (1995) ve UNIX OSF/Motif (1993).

    Okuyucular bu yayınları öğretim yardımı olarak kullanabilirler. Arayüz terminolojisi kılavuzlar arasında farklılık gösterebilir, ancak materyalin adresi, karmaşıklık düzeyi ve kullanıcı arayüzünün açıklanan ilkeleri tüm kitaplar için aynıdır.

    İlkelere uymanın önemi

    "Arayüz uyumsuzluğu, büyük bir şirkete üretkenlik kaybı ve artan destek maliyetleri açısından milyonlarca dolara mal olabilir." - Jesse Briest.

    Bu ilkeler, tüm yazılım ve donanımlar için, tüm arayüz türleri ve stilleri için geçerlidir. Oldukça uzun bir süre boyunca geliştirildiler: yazılım arayüzü alanında araştırmalar yapıldı, geliştirmeler yapıldı ve Macintosh ve PC dahil olmak üzere birçok bilgisayar platformunun kullanıcıları ile görüşmeler yapıldı.

    Bu ilkeler, zamanın ve yeni bilgisayar teknolojilerinin ortaya çıkışının testinden geçti. Jakob Nielsen şunları belirtti: "Program giriş, hareket tanıma ve canlı video görüntüleri için 'DataGlove' içeren fütüristik bir 3D tasarıma sahip olsa bile ilkeler temel olmaya devam edecek. komutları kullanan makine" .

    Bu ilkelerin yorumlanması, donanıma, işletim sistemine, kullanıcı arabiriminin bileşenlerine ve görevlerine bağlı olacaktır. Genellikle bir iş kararı, ilkelerin tasarımcılar tarafından kullanılmasını geçersiz kılar. Kullanıcı ve tasarımcı modelleri de farklıdır ve ilkelerin nasıl uygulanacağını etkiler. Bir projenin geliştirilmesindeki bazı önemli aşamalarda şu soru ortaya çıkabilir: "Bundan sonra ne olacak?". Cevap şu olmalıdır: "Kullanıcı ne istiyor!".

    Bir arayüz oluşturmak için en uygun ilkeleri seçme kararı, tasarım ekibinin tüm üyeleri tarafından ortaklaşa geliştirilmelidir. Bu kararlar, yazılım ürünlerinin satın alınmasını ve geliştirilmesini iyileştirmeye yardımcı olmalıdır.

    Kullanıcı Arayüzü Tasarım Kuralları

    "Daha basit yap, ama daha ilkel değil."

    Albert Einstein

    Kural 1: kontrolü kullanıcıya verin

    Deneyimli tasarımcılar, kullanıcıların bazı görevleri kendi takdirine bağlı olarak çözmelerine izin verir. Mimarlar, karmaşık bir bina kompleksinin inşaatını tamamladıktan sonra, yayalar için aralarına yollar döşemelidir. Şu ana kadar insanların sitelerden nereden geçeceğini tam olarak bilmiyorlar. Bu nedenle, yollar asla binaların inşasıyla aynı anda döşenmez. Evler arasındaki platformlara "Lütfen çimlerin üzerinde yürüyün" yazılı tabelalar asılmıştır. Bir süre sonra inşaatçılar geri dönüyor ve ancak şimdi, nüfusun "iradesine" göre, dövülmüş yolları asfaltla dolduruyorlar.

    Kullanıcıya sistem üzerinde kontrol sağlayan ilkeler:

    1) modları ihtiyatlı bir şekilde kullanın;

    2) kullanıcıya seçme fırsatı sağlamak için: fareyle veya klavyeyle veya bunların bir kombinasyonuyla çalışma;

    3) kullanıcının dikkatini odaklamasına izin verin;

    4) işinde ona yardımcı olacak mesajları göster;

    5) geri bildirimin yanı sıra acil ve tersine çevrilebilir eylemler için koşullar yaratın;

    6) uygun rotalar ve çıkışlar sağlamak;

    7) sistemi farklı eğitim düzeylerine sahip kullanıcılara uyarlamak;

    8) kullanıcı arayüzünü daha anlaşılır hale getirin;

    9) kullanıcıya arayüzü beğeninize göre özelleştirme fırsatı verin;

    10) kullanıcının arayüz nesnelerini doğrudan manipüle etmesine izin verir;

    Modları Akıllıca Kullanın

    Modlar her zaman kötü değildir. Bir kişinin ihtiyaç duyduğu modları seçmesine izin vermek gerekir. Arayüz o kadar doğal olmalıdır ki, kullanıcı onlarla rahatça çalışabilir. Kullanıcı, bir kelime işlemcide çalışırken ekleme veya üzerine yazma moduna geçmeyi düşünmez - bu oldukça mantıklı ve doğaldır.

    Kişinin fareyi ve klavyeyi kullanmasına izin ver

    Fare yerine klavyeyi kullanarak klavye ile çalışabilme. Bu, kullanıcının çalışmasının daha kolay olacağı, ya kullanamayacağı ya da sahip olmadığı anlamına gelir. Araç çubukları, fareyi kullanırken işinizi hızlandırmak için tasarlanmıştır. Ancak klavyeyle çalışırken bunlara ulaşılamaz - bu tür durumlar için "açılır" menüler sağlanır.

    Kullanıcının dikkatini değiştirmesine izin ver

    Kullanıcıları, başlattıkları iş akışlarını çalıştırmayı bitirmeye zorlamayın. Onlara bir seçenek verin - verileri geçersiz kılın veya saklayın ve kaldıkları yere geri dönün. Kullanıcıların programda çalışma sürecini kontrol etme fırsatına sahip olmasına izin verin.

    Açıklama mesajlarını ve metinlerini göster

    Arayüz boyunca kullanıcı dostu terimler kullanın. Bitleri ve baytları bilmek zorunda değiller!

    Mesaj ve davetlerde doğru tonu seçmelisiniz. sorunlara ve hatalara karşı sigortalamak da aynı derecede önemlidir. Kötü terminoloji ve yanlış üslup, kullanıcıların meydana gelen hatalardan kendilerini sorumlu tutmalarına neden olacaktır.

    Anında ve tersine çevrilebilir eylem ve geri bildirim sağlayın

    Her yazılım ürünü UNDO ve REDO fonksiyonlarını içermelidir. kullanıcı bilgilendirilmelidir ki bu hareket geri alınamaz ve mümkünse izin verin alternatif eylem. Kişiyi o anda olanlardan sürekli olarak haberdar edin.

    Açık yollar ve çıkışlar sağlayın

    Kullanıcılar, herhangi bir yazılım ürününün arayüzünden keyif almalıdır. Sektörde kullanılan arayüzler dahi kullanıcıyı korkutmamalı, butonlara basmaktan, başka bir ekrana geçmekten korkmamalıdır. İnternet istilası, navigasyonun İnternet'teki ana etkileşimli teknik olduğunu göstermiştir. Kullanıcı WWW'de istenen sayfaya nasıl ulaşılacağını anlarsa, arayüzü anlama olasılığı yüzde 80'dir. İnsanlar tarayıcıyla nasıl çalışacaklarını çok çabuk öğreniyorlar.

    Farklı beceri düzeylerine sahip kullanıcılara uyum sağlayın

    Deneyimli kullanıcıları sıradan kullanıcıların yararına "feda etmeyin". Program işlevlerine hızlı erişim sağlamaları gerekir. Tek bir makro kullanmaya alışkınlarsa, bir eylemi gerçekleştirmek için birden fazla adım atarak onları sıkmayın.

    Kullanıcı arayüzünü "şeffaf" yapın

    Kullanıcı arayüzü, yazılım ürününün "efsanevi" kısmıdır. İyi bir proje ile kullanıcılar onun "varlığını" hissetmezler bile. Kötü tasarlanmışsa, kullanıcıların yazılım ürününü etkin bir şekilde kullanmak için çok çaba sarf etmesi gerekecektir. Arayüzün görevi, insanların kendilerini bilgisayarın "içinde" hissetmelerine, nesneleri özgürce manipüle etmelerine ve onlarla çalışmalarına yardımcı olmaktır. Buna "şeffaf" arayüz denir!