• Bir nesne modeli oluşturmanın temel ilkeleri. Mevcut bir iş sürecinin nesne modelini oluşturma

    Bina nesne modeli UML modelleme dilini kullanan görevler.

    StarUML'DE İŞ YAPILIYOR

    Kurşun zamanı:

    2 - 3 ders

    Çalışmayı korumak için Rational Rose paketinde oluşturulmuş, üç tür diyagram içeren bir proje sağlanmalıdır: kullanım durumları, sınıflar (arayüz, veri) ve her işlev için diziler.

    GÖREV ÖRNEĞİ:

    Aşağıdaki bilgiler veritabanında saklanmalıdır:

    - öğrenci bilgileri

    Ö AD SOYAD.,

    Ö adres,

    Ö pasaport verileri,

    Ö hesap numarası,

    Ö Doğum tarihi,

    Ö grup);

    - uzmanlıklar hakkında bilgi

    Ö uzmanlığın adı,

    Ö şifre;

    - grup bilgisi

    Ö uzmanlık,

    Ö kabul yılı

    Ö grup numarası.

    Aşağıdaki alanları içeren “Grup Listesi” belgesinin düzenlenmesini sağlayın:

    · seri numarası,

    · AD SOYAD.,

    · hesap numarası.


    İş emri

    Nesne modeli, Rational Rose paketinde oluşturulmuştur. Bunun için boş bir proje oluşturacağız. Çalışmanıza bir kullanım durumu diyagramı ile başlayın. Use Case View bölümünün Ana alanında Şekil 9'da gösterildiği gibi oluşturulmuştur.

    Bir diyagram oluşturmaya başlamadan önce, sistem kullanıcılarının (aktörler) rollerini ve işlevlerini (kullanım durumları) tanımlamak gerekir. Bizim durumumuzda, sistemle iki aktör çalışıyor - bu “Eğitim Departmanı Çalışanı” ve “Dekanlık Çalışanı”. Eğitim departmanının bir çalışanının işlevleri, bir uzmanlık listesinin tutulmasını içerir (altında liste bakımı giriş eklemeyi, düzenlemeyi ve silmeyi anlayacağız). Dekanın ofis çalışanının işlevleri, öğrencilerin bir listesini tutmayı ve bir grup listesini tutmayı içerir.

    Oluşturulan diyagram, Şek. 10.


    Ardından, Mantıksal Görünüm bölümünde iki sınıf diyagramı oluşturun. Bunun için iki paket oluşturabilirsiniz. İlk diyagram, tasarlanmakta olan uygulamanın arayüz sınıflarını içermelidir (bkz. Şekil 11). Bu şekilde, şekli karıştırmamak için Grup Listesi ve Öğrenci Listesi sınıflarından Ekle, Değiştir ve Sil işlemleri çıkarılmıştır. Grup listesi (alt sınıf) çıktı belgesidir (belirli bir gruptaki öğrencilerin bir listesini almak gerektiğinden, "Grup Seçimi" sınıfından önce gelir). İkinci diyagram veritabanı varlıklarıdır (bkz. Şekil 12).



    Oluşturulan sınıf diyagramı, gelecekteki uygulamanın tüm biçimlerini ve bunların ilişkilerini gösterir.

    Anahtar alanları bırakmalı ve bir bağlantı oluşturmalısınız (okun içerik menüsünden - Çokluk).

    Bir nesne modeli oluşturmanın bir sonraki adımı, dizi diyagramları oluşturmaktır. Kullanım durumu diyagramında her bir kullanım durumu için sıralama diyagramları oluşturulur. Bir kullanım senaryosuna sıra diyagramı eklemek için, onu ağaçta seçmeli ve çağırmalısınız. bağlam menüsü(NewàSequence Diyagramı) Şek. 13.

    "Özellikler listesinin tutulması" kullanım durumu için bir sıralama diyagramı örneği, Şek. 14.

    "Grup listesi" çıktı belgesi için bu tür bir diyagram oluştururken, bizim durumumuzda, önce "Grup seçimi" formunda bir grup seçmelisiniz (sırayla, "Grup" varlığından gelen veriler ona ulaşmalıdır) ve ardından verilerin zaten "Öğrenci" varlığından geldiği çıktı belgesinin şeklini göstermelisiniz.

    Nesne yönelimli bir yaklaşımla, sistem gereksinimlerinin analizi bu sistemin modellerinin geliştirilmesine indirgenir. Bir sistemin modeli (veya başka bir nesne veya fenomen), sistemi oluşturan ana nesnelerin ve bu nesneler arasındaki ilişkilerin tanımlandığı, sistemin resmi bir açıklamasıdır. Model oluşturma, öğrenmenin yaygın bir yoludur karmaşık nesneler ve fenomenler. Birçok detay modelden çıkarılmıştır ve bu da anlaşılmasını zorlaştırmaktadır. Modelleme hem bilimde hem de teknolojide yaygındır.

    Modeller yardımı:

    Geliştirilmekte olan sistemin performansını geliştirmenin ilk aşamalarında kontrol edin;

    Sistem müşterisi ile sistem için gereksinimlerini netleştirerek iletişim kurun;

    Sistem tasarımında (gerekirse) değişiklikler yapın (hem tasarımın başlangıcında hem de yaşam döngüsünün diğer aşamalarında).

    Şu anda, uygulamalı yazılım sistemlerinin nesne yönelimli geliştirilmesi için, bu sistemlerin modellerinin bir bilgisayarda oluşturulmasına ve yorumlanmasına dayanan çeşitli teknolojiler bulunmaktadır. Bu projede bunlardan biri olan OMT (Object Modeling Techniques) uygulanmaktadır. Ayrıca UML dilinde bir nesne modeli diyagramı oluşturulmuştur.

    Nesne modeli, sistemi oluşturan nesnelerin yapısını, niteliklerini, işlemlerini, diğer nesnelerle ilişkilerini açıklar. Nesne modeli, geliştirilmekte olan sistem için önemli olan gerçek dünyadaki kavramları ve nesneleri yansıtmalıdır. Nesne modeli öncelikle, geliştirilmekte olan sistemin kullanımıyla ilişkili uygulama alanının terminolojisinin kullanımında ifade edilen, geliştirilmekte olan sistemin pragmatiğini yansıtır.

    Nesne modeli sınıflarını tanımlama

    Tasarlanmakta olan sistem için dış gereksinimlerin analizi, bu sistemin çözmesi gereken uygulanan problemle ilişkili nesneleri ve nesne sınıflarını belirlemeyi mümkün kılar. Tüm sınıflar, dikkate alınan uygulama alanında anlaşılmalıdır; liste, yığın vb. gibi bilgisayar uygulamasıyla ilgili sınıflar. bu aşamada girilmemelidir.

    Yazılı ifadeden olası sınıfları vurgulayarak başlayalım. uygulamalı görev. Olası sınıfları belirlerken, aklınıza gelen her sınıfın adını yazarak mümkün olduğu kadar çok sınıf belirlemeye çalışın. Özellikle problemin ön ifadesinde geçen her isim bir sınıfa karşılık gelebilir. Bu nedenle, olası sınıfları ayırt ederken, bu türden her isim genellikle olası bir sınıfla ilişkilendirilir.

    Sonuç, olası sınıf adlarının aşağıdaki listesidir:

    Başka bir vekil;

    Belge;

    Uzak Web sunucusu;

    Yapılandırma;

    Belge hakkında bilgi;

    Uzak Web sunucusu hakkında bilgi;

    İstek başlığı;

    Yanıt başlığı.

    Nesne Modeli

    Nesne yönelimli teknoloji sözde dayanmaktadır nesne modeli. Yapısının ana ilkeleri şunlardır: soyutlama, kapsülleme, modülerlik, hiyerarşi, tiplendirme, paralellik ve kalıcılık. Bu ilkelerin her biri kendi içinde yeni değildir, ancak nesne modeli ilk kez birlikte uygulanmıştır.

    Nesne yönelimli analiz ve tasarım, geleneksel yapısal tasarım yaklaşımlarından temel olarak farklıdır: burada ayrışma sürecini ve sonuçta ortaya çıkan mimariyi farklı şekilde düşünmeniz gerekir. yazılım ürünü büyük ölçüde yapılandırılmış programlama için geleneksel kavramların ötesine geçer. Farklılıklar, yapısal tasarımın yapısal programlamaya, nesne yönelimli tasarımın ise nesne yönelimli programlama metodolojisine dayanmasından kaynaklanmaktadır.

    Yapısal tasarım teknikleri, algoritmaları hazır yapı taşları olarak kullanarak karmaşık sistemler geliştirme sürecini basitleştirmeye yardımcı olur. Benzer şekilde, nesne yönelimli tasarım teknikleri, geliştiricilerin güçlü uygulamalarına yardımcı olmak için tasarlanmıştır. ifade aracı sınıfları ve nesneleri bloklar olarak kullanan nesne ve nesne yönelimli programlama.

    . (nesne yönelimli analiz, OOA), nesne yönelimli bir dünya görüşüne dayalı gerçeklik modelleri yaratmayı amaçlar.

    Nesne Yönelimli Analizsistem gereksinimlerinin sınıflar ve tanımlanan nesneler açısından algılandığı bir metodolojidir. konu alanı.

    . ( nesne yönelimli tasarım, OOD )

    Programlama öncelikle belirli programlama dillerinin mekanizmalarının doğru ve verimli kullanımını içerir. Tasarım ise tam tersine karmaşık sistemlerin doğru ve verimli bir şekilde yapılandırılmasına odaklanır. Nesne yönelimli tasarımı şu şekilde tanımlayalım:

    Nesne Yönelimli Tasarımnesne ayrıştırma sürecini ve mantıksal ve fiziksel, statik ve fiziksel temsil tekniklerini birleştiren bir tasarım metodolojisidir. dinamik modeller tasarlanan sistem.

    İÇİNDE bu tanım iki önemli parça içerir: nesne yönelimli tasarım

    1) nesne yönelimli ayrışmaya dayanır;

    2) sistemin mantıksal (sınıflar ve nesneler) ve fiziksel (modüller ve süreçler) yapısını ve ayrıca statik ve dinamik yönlerini yansıtan modelleri temsil etmek için çeşitli teknikler kullanır.



    Nesneye yönelik tasarımı yapısal tasarımdan ayıran nesneye yönelik ayrışmadır, ilk durumda, sistemin mantıksal yapısı, ikinci durumda - algoritmalar tarafından sınıflar ve nesneler biçimindeki soyutlamalarla yansıtılır.

    . (nesne yönelimli programlama, OOP)

    Nesne yönelimli programlamabir programı, her biri belirli bir sınıfın örneği olan ve sınıfların bir kalıtım hiyerarşisi oluşturduğu bir dizi nesne olarak temsil etmeye dayalı bir programlama metodolojisidir.

    Bu tanım üç bölüme ayrılabilir:

    1) OOP, temel öğeler olarak kullanır nesneler, algoritmalar değil;

    2) her nesne misal herhangi bir özel sınıf;

    3) sınıflar düzenlenir hiyerarşik olarak.

    Bir program, yalnızca bu gereksinimlerin üçü de karşılanırsa nesne yönelimli olacaktır. Özellikle, hiyerarşik ilişkilere dayanmayan programlama OOP değildir, ancak programlamaya OOP denir. programlama tabanlı soyut türler veri.

    İlgili soyutlama türleri ile birlikte aşağıda listelenen beş ana programlama stili türü vardır:

    Herhangi bir programlama stilini tüm alanlarda en iyi olarak kabul etmek imkansızdır. pratik uygulama. Örneğin, bilgi tabanlarının tasarımı için kural odaklı bir stil ve hesaplamalı görevler için prosedür odaklı bir tarz daha uygundur. Birikmiş deneyime dayalı olarak, nesne yönelimli stil, en geniş uygulama yelpazesi için en kabul edilebilir olanıdır; aslında, bu paradigma genellikle diğer paradigmaların dayandığı mimari temel olarak hizmet eder.

    Her programlama stilinin kendi kavramsal temeli vardır. Her tarz kendi zihniyetini ve çözülmekte olan sorunu algılama biçimini gerektirir. Nesne yönelimli stil için kavramsal temel, nesne modeli. Dört ana unsuru vardır:

    • soyutlama;
    • kapsülleme;
    • modülerlik;
    • hiyerarşi.

    Bu unsurlar ana herhangi biri olmadan modelin nesne yönelimli olmayacağı anlamında. Ana unsurlara ek olarak, üç ek unsur daha vardır:

    • yazıyor;
    • paralellik;
    • sebat.

    Bunları isteğe bağlı olarak adlandırmak, nesne modelinde yararlı oldukları, ancak gerekli olmadığı anlamına gelir.

    Soyutlama Bir nesnenin onu diğer tüm nesne türlerinden ayıran temel özelliklerini vurgular ve böylece gözlemcinin bakış açısından kavramsal sınırlarını net bir şekilde tanımlar.

    Soyutlama, istemci ve sunucu kavramlarına dayanmaktadır.

    Müşteri başka bir nesnenin kaynaklarını kullanan herhangi bir nesnedir (buna sunucu).

    Bir nesnenin davranışını diğer nesnelere sağladığı hizmetler ve diğer nesneler üzerinde gerçekleştirdiği işlemlerle karakterize edeceğiz. Bu yaklaşım, nesnenin dış tezahürlerine odaklanır ve fikre götürür. sözleşme modeli programlama, bir nesnenin dışsal tezahürü, diğer nesnelerle olan sözleşmesi açısından ele alındığında, buna göre, onun iç organizasyon(genellikle diğer nesnelerle etkileşim halinde). Sözleşme, sunucu nesnesinin istemci nesneye karşı sahip olduğu tüm yükümlülükleri düzeltir. Başka bir deyişle, bu sözleşme tanımlar sorumluluk nesne, yani sorumlu olduğu davranış.

    Bu sözleşme tarafından sağlanan her işlem, resmi parametreleri ve dönüş türü ile benzersiz bir şekilde tanımlanır. Bir istemcinin başka bir nesne üzerinde gerçekleştirebileceği tüm işlemler kümesi, doğru sipariş bu işlemlerin çağrıldığı yer denir protokol. Protokol her şeyi yansıtır olası yollar, nesnenin hareket edebileceği veya etkilenebileceği. Böylece soyutlamanın dış davranışını statik ve dinamik bakış açılarından tamamen belirler.

    kapsülleme - bu, nesnenin yapısını ve davranışını belirleyen öğelerini birbirinden ayırma işlemidir. Kapsülleme, bir soyutlamanın sözleşmeden doğan yükümlülüklerini uygulamalarından ayırmaya hizmet eder.

    Soyutlama ve kapsülleme birbirini tamamlar: soyutlama bir nesnenin gözlemlenebilir davranışına odaklanırken, kapsülleme içsellerle ilgilenir. Çoğu zaman, kapsülleme, bilgileri gizleyerek, yani tümünü maskeleyerek gerçekleştirilir. iç parçalar dış davranışı etkilemez. Tipik olarak, bir nesnenin hem iç yapısı hem de yöntemlerinin uygulanması gizlidir. Pratik olarak bu, bir sınıfta iki bölüm olduğu anlamına gelir: bir arayüz ve bir uygulama. Arayüz bir nesnenin dış davranışını yansıtır, tüm nesnelerin davranışının soyutlanmasını tanımlar bu sınıf. Dahili uygulama Bu soyutlamanın temsilini ve nesnenin istenen davranışını elde etmek için mekanizmaları açıklar. Arayüzü ve uygulamayı ayırma ilkesi, işin özüne karşılık gelir: etkileşimle ilgili her şey arayüz bölümünde toplanır. bu nesne diğer nesnelerle; uygulama, nesneler arasındaki etkileşim süreciyle ilgili olmayan tüm ayrıntıları diğer nesnelerden gizler.

    modülerlik dahili olarak tutarlı ancak gevşek bir şekilde bağlı modüllere ayrıştırılmış bir sistemin bir özelliğidir.

    Bir sistemi modüllere ayırma sürecinde iki kural faydalı olabilir. İlk olarak, modüller, sistemin tamamında yeniden kullanılabilen bir programın temel ve bölünmez birimleri olarak hizmet ettiğinden, sınıfların ve nesnelerin modüllere tahsisi bunu dikkate almalıdır. İkincisi, birçok derleyici her modül için ayrı bir kod bölümü oluşturur. Bu nedenle, modülün boyutunda kısıtlamalar olabilir. Alt program çağrılarının dinamikleri ve modüller içindeki açıklamaların düzenlenmesi, bağlantı yerini ve sayfa yönetimini büyük ölçüde etkileyebilir. sanal bellek. Yordamlar modüllere zayıf bir şekilde bölünürse, bölümler arasındaki karşılıklı çağrılar daha sık hale gelir ve bu da önbellek verimliliğinde kayba ve sık sayfa değişikliklerine yol açar.

    Bu tür çelişkili gereksinimleri bir araya getirmek oldukça zordur, ancak asıl önemli olan, projedeki sınıfların ve nesnelerin izolasyonunun ve modüler bir yapının organizasyonunun ne olduğunu anlamaktır. bağımsız hareketler. Sınıfları ve nesneleri ayırma işlemi, sistemin mantıksal tasarım sürecinin bir parçasıdır ve modüllere bölme, fiziksel tasarım aşamasıdır. Elbette bazen bir sistemin fiziksel tasarımını tamamlamadan mantıksal tasarımını tamamlamak mümkün olmuyor ya da tam tersi oluyor. Bu iki işlem yinelemeli olarak gerçekleştirilir.

    hiyerarşi - bu, soyutlamaların sıralaması, seviyelere göre düzenlenmesidir.

    İle ilgili ana hiyerarşik yapı türleri karmaşık sistemler sınıf yapısı ("is-a" hiyerarşisi) ve nesne yapısı ("parçası" hiyerarşisi).

    önemli bir unsur nesne yönelimli sistemler ve "is-a" hiyerarşisinin ana türü, yukarıda bahsedilen kalıtım kavramıdır. Kalıtım, bir sınıfın bir veya daha fazla başka sınıfın (sırasıyla, Bekar Ve çoklu kalıtım). Başka bir deyişle, kalıtım, alt sınıfların yapıyı bir veya daha fazla üst sınıftan miras aldığı bir soyutlamalar hiyerarşisi oluşturur. Genellikle bir alt sınıf, üst sınıfın bileşenlerini oluşturur veya yeniden yazar.

    "Birdir" hiyerarşisi bir genelleme/uzmanlık ilişkisini tanımlarsa, "parçası" ilişkisi bir toplama hiyerarşisi sunar. Hiyerarşinin "bölümünde", bir sınıf, uygulamasında kullanılanların herhangi birinden daha yüksek bir soyutlama düzeyindedir.

    Yazıyor bir sınıfın nesnelerinin diğerinin yerine kullanımına karşı korunmanın veya en azından kontrol etmenin bir yoludur.

    paralellik aktif nesneleri pasif olanlardan ayıran bir özelliktir.

    sebat - bir nesnenin zaman içinde var olma, onu doğuran süreçten sağ çıkma ve (veya) uzayda, orijinal adres alanından hareket etme yeteneği.

    Şimdi her şeye sahibiz gerekli kavramlar bir nesne modeli oluşturma sürecini açıklamak için. Bu süreç aşağıdaki adımları içerir:

    nesnelerin ve sınıfların tanımı;

    bir veri sözlüğünün hazırlanması;

    nesneler arasındaki bağımlılıkların tanımı;

    nesnelerin ve bağlantıların özniteliklerinin tanımı;

    kalıtım kullanılırken sınıfların organizasyonu ve basitleştirilmesi;

    modelin daha fazla araştırılması ve geliştirilmesi.

    2.2.1. Sınıfların tanımı. Tasarlanan PS için harici gereksinimlerin analizi, bu sistemin çözmesi gereken uygulanan problemle ilişkili nesneleri ve nesne sınıflarını belirlemenize olanak tanır. Tüm sınıflar, dikkate alınan uygulama alanında anlaşılmalıdır; liste, yığın vb. gibi bilgisayar uygulamasıyla ilgili sınıflar. bu aşamada girilmemelidir.

    Uygulanan problemin yazılı ifadesinden olası sınıfları vurgulayarak başlamanız gerekir ( başvuru şartları ve müşteri tarafından sağlanan diğer belgeler). Projenin gelecekteki kaderi büyük ölçüde buna bağlı olduğundan, bunun çok karmaşık ve sorumlu bir geliştirme aşaması olduğu akılda tutulmalıdır.

    Olası sınıfları belirlerken, aklınıza gelen her sınıfın adını yazarak mümkün olduğu kadar çok sınıf belirlemeye çalışın. Özellikle problemin ön ifadesinde geçen her isim bir sınıfa karşılık gelebilir. Bu nedenle, olası sınıfları ayırt ederken, bu türden her isim genellikle olası bir sınıfla ilişkilendirilir.

    · gereksiz sınıflar: iki veya daha fazla sınıf aynı bilgiyi ifade ediyorsa bunlardan sadece biri tutulmalı;

    · alakasız(sorunla doğrudan ilgili değil) sınıflar: olası her bir sınıf adı için, ne ölçüde ihtiyaç duyulduğu değerlendirilir. gelecekteki sistem(bunu değerlendirmek genellikle çok zordur); alakasız sınıflar hariç tutulur;



    · belli belirsiz tanımlanmış(sorun açısından) sınıflar(bkz. madde 2.3.1);

    · Öznitellikler: bazı isimler daha çok sınıflara değil, niteliklere karşılık gelir; bu tür isimler, kural olarak nesnelerin özelliklerini tanımlar (örneğin, ad, yaş, ağırlık, adres vb.);

    · operasyonlar: bazı isimler artık sınıflara değil, işlem adlarına karşılık gelir (örneğin, telefon_çağrısının herhangi bir sınıf anlamına gelmesi olası değildir);

    · roller: bazı isimler, nesne modelindeki rol adlarını tanımlar (örneğin, sahip, sürücü, patron, çalışan; bu adların tümü, sınıf kişisinin nesnelerinin çeşitli bağımlılıklarındaki rollerle ilişkilendirilir);

    · uygulama yapıları: programlama ve bilgisayar donanımıyla daha ilgili isimler olmamalıdır bu aşama tasarlanan PS'nin özelliklerini yansıtmadıkları için sınıfları karşılaştırın; bu tür isimlere örnekler: alt program, süreç, algoritma, kesme vb.

    Tüm gereksiz (gereksiz) olası sınıfların isimleri elendikten sonra, tasarlanmakta olan sistemi oluşturan sınıfların bir ön listesi elde edilecektir.

    2.2.2. Veri sözlüğünün hazırlanması. Tek tek kelimelerin çok fazla yorumu var. Bu nedenle, tasarımın en başında hazırlanmak gerekir. bilgi sözlüğü, projede dikkate alınan tüm nesnelerin (sınıfların), niteliklerin, işlemlerin, rollerin ve diğer varlıkların açık ve net tanımlarını içerir. Böyle bir kelime dağarcığı olmadan, projeyi diğer geliştiriciler ve sistemin müşterileriyle tartışmak mantıklı değildir, çünkü herkes tartışılan terimleri kendi yöntemleriyle yorumlayabilir. Örnek bir sözlük için 2.3.2'ye bakın.

    2.2.3. Bağımlılıkların tanımı. Açık Sonraki adım bir nesne modeli oluşturmak, sınıflar arasındaki bağımlılıkları tanımlar. Her şeyden önce, diğer sınıflara açık referanslar olan nitelikler sınıfların dışında tutulur; bu tür öznitelikler bağımlılıklarla değiştirilir. Bu değiştirmenin amacı, bağımlılıkların sınıflarla aynı düzeyde bir soyutlama olması ve bu nedenle gelecekteki uygulamayı doğrudan etkilememesidir (bir sınıfa atıfta bulunmak, bağımlılıkları uygulamanın yollarından yalnızca biridir).

    Uygulanan problemin ön ifadesinde karşılaşılan isimlerden olası sınıfların adları elde edildiği gibi, olası bağımlılıkların adları da fiiller veya fiil cümleleri belirtilen belgede bulunur. Fiziksel konum (follows_is_a_part, is_contained_in), yönlendirilmiş eylem (sets_in_motion), iletişim (talks_with), aidiyet (has_is_a_part), vb. genellikle bu şekilde tanımlanır. Belirli bir uygulamalı problemin ön ifadesinden açık ve örtülü sözel ifadelerin seçimine bir örnek, paragraf 2.3.3'te ele alınmaktadır.

    Ardından, aşağıdaki ölçütleri kullanarak gereksiz veya yanlış bağımlılıkları kaldırmalısınız:

    · hariç tutulan sınıflar arasındaki bağımlılıklar kalan sınıflar açısından silinmeli veya yeniden formüle edilmelidir (bkz. 2.3.3);

    · ilgisiz bağımlılıklar ve uygulamayla ilgili bağımlılıklar hariç tutulmalıdır (bkz. 2.3.3);

    · hareketler: bağımlılık, küçük olayları değil, uygulama alanının yapısal özelliklerini tanımlamalıdır (bkz. madde 2.3.3);

    · eğitim bağımlılıkları:üç veya üç arasındaki bağımlılıkların çoğu Büyük bir sayı sınıflar, gerekirse niteleyiciler kullanılarak birkaç ikili bağımlılığa ayrıştırılabilir (bkz. 2.3.3); bazı (nadir) durumlarda böyle bir ayrıştırma gerçekleştirilemez; örneğin, "Profesör 628 numaralı odada bir ders veriyor" eğitim bağımlılığı, bilgi kaybı olmadan ikili olanlara ayrıştırılamaz;

    · bağımlılık türevleri: gereksiz oldukları için diğer bağımlılıklar aracılığıyla ifade edilebilecek bağımlılıkları hariç tutmak gerekir (bkz. bölüm 2.3.3); Gereksiz (türetilmiş) bağımlılıkları hariç tutarken, özellikle dikkatli olunmalıdır, çünkü birbirini kopyalayan sınıflar arasındaki tüm bağımlılıklar gereksiz değildir; bazı durumlarda, diğer bağımlılıklar yalnızca bir türev bağımlılığın varlığının kurulmasına izin verir, ancak bu bağımlılığın çokluğunun oluşturulmasına izin vermez; Örneğin, Şekil l'de gösterilen durumda. 2.36, firmanın birçok çalışanı ve birçok bilgisayarı var; her çalışana sağlanan kişisel kullanım birkaç bilgisayar, ayrıca ortak bilgisayarlar var; sağlanan_for_use bağımlılığının önemi, hizmet ve sahiplik bağımlılıklarından çıkarılamaz; türetilmiş bağımlılıklar yeni bilgiler eklemese de genellikle kullanışlıdır; bu durumlarda, diyagramda eğik çizgi ile işaretlenerek gösterilebilirler.

    Pirinç. 2.36. Artık Olmayan Bağımlılıklar

    Gereksiz bağımlılıkları kaldırdıktan sonra, kalan bağımlılıkların anlamlarını aşağıdaki gibi düzeltmemiz gerekir:

    · yanlış adlandırılmış bağımlılıklar: anlamlarını netleştirmek için yeniden adlandırılmalıdırlar (bkz. 2.3.3);

    · rol adları: gerektiğinde rol adları eklemeniz gerekir; rol adı, ilgili sınıfın bu bağımlılıkta oynadığı rolü, bu bağımlılığa katılan başka bir sınıfın bakış açısından tanımlar; rol adı sınıf adından açıksa atlanabilir (bkz. bölüm 2.3.3);

    · elemeler: gerektiğinde niteleyiciler ekleyerek, nesnelerin benzersiz bir şekilde tanımlanmasını sağlayan bağlam öğelerini tanıtıyoruz; niteleyiciler aynı zamanda bazı bağımlılıkların çokluğunu azaltarak basitleştirmeyi mümkün kılar;

    · çokluk:çok sayıda bağımlılığın tanımlarını eklemek gerekir; aynı zamanda, sistem gereksinimlerinin daha fazla analiz edilmesi sürecinde bağımlılıkların çokluğunun değişebileceği unutulmamalıdır;

    · hesaplanmamış bağımlılıklar belirlenmeli ve modele eklenmelidir.

    2.2.4. Niteliklerin iyileştirilmesi. Bir sonraki aşamada, öznitelikler sistemi belirlenir: sınıf öznitelikleri düzeltilir, gerekirse yeni öznitelikler eklenir. Nitelikler, söz konusu sınıfın nesnelerinin özelliklerini ifade eder veya mevcut durumlarını belirler.

    Nitelikler genellikle isimlere karşılık gelir; örneğin car_color (nesne özelliği), imleç_konumu (nesne durumu). Nitelikler, kural olarak, nesne modelinin yapısı üzerinde çok az etkiye sahiptir.

    Mümkün olduğu kadar çok özellik tanımlamaya çalışmamalısınız: çok sayıda nitelikler modeli karmaşıklaştırır, problemin anlaşılmasını zorlaştırır. Rastgele, önemsiz ve türetilmiş öznitelikleri atlayarak yalnızca tasarlanan uygulama sistemiyle ilgili öznitelikleri girmek gerekir.

    Nesnelerin niteliklerinin yanı sıra, sınıflar arasındaki bağımlılıkların niteliklerini (nesneler arasındaki bağlantılar) tanıtmak da gereklidir.

    Nitelikleri belirlerken, aşağıdaki kriterler tarafından yönlendirilirler:

    · Nitelikleri Nesnelerle Değiştirme. Bir varlığın varlığı değerinden daha önemliyse, o zaman bu bir nesnedir, eğer değer daha önemliyse, o zaman bu bir niteliktir: örneğin, patron bir nesnedir (patronun kim olduğu önemli değil, asıl mesele birinin o olması gerektiğidir), maaş bir niteliktir (değeri çok önemlidir); şehir - her zaman bir nesne, ancak bazı durumlarda bu bir özellik gibi görünebilir (örneğin, şirketin adresinin bir parçası olarak şehir); şehrin bir öznitelik olmasını istediğiniz durumlarda, firma ve şehir sınıfları arasında bir bağımlılık (örneğin, konum) tanımlamanız gerekir.

    · Elemeler. Bir özelliğin değeri belirli bir bağlama bağlıysa, bir niteleyici yapılmalıdır (bkz. 2.3.4).

    · İsimler. Adlar genellikle niteleyiciler tarafından nesne niteliklerinden daha iyi eşleştirilir; adın bir kümenin nesnelerinden seçime izin verdiği tüm durumlarda, bir niteleyici yapılmalıdır (bkz. 2.3.4).

    · tanımlayıcılar. Nesne tanımlayıcıları, bunların uygulanmasıyla ilişkilendirilir. Tasarımın ilk aşamalarında, nitelikler olarak değerlendirilmemelidirler.

    · ilişki özellikleri. Bir özellik kendi başına bir nesneyi değil, başka bir nesneyle (nesneler) bağlantısını karakterize ediyorsa, bu, bağlantının bir niteliğidir ve nesnenin bir niteliği değildir.

    · Dahili değerler. Nesnenin yalnızca iç durumunu tanımlayan, nesnenin dışında algılanamayan nitelikler dikkate alınmamalıdır.

    · Alakasız ayrıntılar. İşlemlerin çoğunu etkilemeyen özniteliklerin atlanması önerilir.

    2.2.5. Kalıtım kullanarak sınıf sisteminin organizasyonu. Ardından, tanıtılan sınıflar için üst sınıflar bulmaya çalışmanız gerekir. Bu, modelin yapısını açıklığa kavuşturduğu ve daha sonra uygulanmasını kolaylaştırdığı için yararlıdır. Bölüm 2.3.5'te bir örnek ele alınmıştır.

    2.2.6. Modelin daha fazla araştırılması ve geliştirilmesi. Sadece çok nadir durumlarda, inşa edilen nesne modeli hemen doğru çıkıyor. Model araştırılmalı ve hata ayıklanmalıdır. Bilgisayar olmadan bir modeli incelerken bazı hatalar bulunabilir, diğerleri ise onu bilgisayardaki dinamik ve işlevsel modellerle birlikte yorumlarken bulunabilir (bu modeller, nesne modeli zaten oluşturulduktan sonra oluşturulur).

    Burada bilgisayar dışı arama tekniklerine ve nesne modelindeki hataların düzeltilmesine bakacağız. Modelde hatalar bulabileceğiniz dış işaretlere dayanırlar; bu işaretler aşağıdaki gruplarda birleştirilebilir.

    Eksik bir nesnenin belirtileri (sınıf):

    bağlantıların ve genellemelerin asimetrisi (miras); hatayı düzeltmek için eksik sınıfları eklemeniz gerekir;

    sınıfın özniteliklerinin ve işlemlerinin uyumsuzluğu; hatayı düzeltmek için, yeni sınıfların özniteliklerinin ve işlemlerinin birbirine karşılık gelmesi için sınıfı birkaç başka sınıfa bölmek gerekir;

    Tatmin edici bir hedef sınıfı olmayan bir işlem algılandı; hatayı düzeltmek için eksik olan hedef sınıfı eklemeniz gerekir;

    Aynı ada ve amaca sahip birkaç bağımlılık bulundu; hatayı düzeltmek için atlanan üst sınıfı genelleştirmeniz ve eklemeniz gerekir.

    Gereksiz (ekstra) bir sınıfın belirtileri:

    belirli bir sınıf için niteliklerin, işlemlerin ve bağımlılıkların olmaması; hatayı düzeltmek için böyle bir sınıfın hariç tutulması gerekip gerekmediğini düşünmeniz gerekir.

    Eksik bağımlılık belirtileri:

    · işlemlere erişimin hiçbir yolu yoktur; hatayı düzeltmek için ilgili isteklere hizmet verme yeteneği sağlayan yeni bağımlılıklar eklemeniz gerekir.

    Gereksiz (gereksiz) bağımlılık belirtileri:

    bağımlılıklarda gereksiz bilgi; hatayı düzeltmek için yeni bilgi eklemeyen bağımlılıkları dışlamak veya türetilmiş bağımlılıklar olarak işaretlemek gerekir;

    bağımlılığı aşan yeterli işlem yok; hatayı düzeltmek için böyle bir bağımlılığın ortadan kaldırılması gerekip gerekmediğini düşünmek gerekir.

    Yanlış yerleştirilmiş bağımlılıkların belirtileri:

    Rol adları, sınıfları için çok geniş veya çok dar. hatayı düzeltmek için bağımlılığı sınıf hiyerarşisinde yukarı veya aşağı taşımanız gerekir.

    Yanlış yerleştirilmiş niteliklerin belirtileri:

    · nesneye, özniteliklerinden birinin değerlerine göre erişmeye gerek yoktur; hatayı düzeltmek için, nitelikli bir bağımlılık tanıtmanız gerekip gerekmediğini düşünmeniz gerekir.

    Açıklanan özelliklerin pratik uygulama örnekleri için, madde 2.3.6'ya bakın.

    Nesne Modeli Örneği

    Bir bankacılık hizmet sistemi için nesne modeli oluşturma sürecini, bu sistemin gereksinim analizi ve ön tasarımı sürecinde ele alalım. İncelenmekte olan sistemin bir nesne modelini oluşturmak için, Bölüm 2.2'de listelenen tüm adımları tamamlamamız gerekir.

    2.3.1. Nesnelerin ve sınıfların tanımı. Paragraf 1.3'te problem formüle edilmiş ve bankacılık hizmet ağının bir diyagramı gösterilmiştir (Şekil 1.3). Sorunun bu ifadesini inceleyerek, olası sınıfları, ön formülasyonunda belirtilen adla karşılaştırarak ayırabiliriz; aşağıdaki olası sınıf adları listesiyle sonuçlanır (içinde alfabetik sıra):

    Bu listeyi, paragraf 2.2.1'deki tavsiyelere uygun olarak sınıf adlarını hariç tutarak inceliyoruz:

    · gereksiz sınıflar: müşteri ve kullanıcının aynı kavramı kastettiği açıktır; bankacılık sisteminin müşteri sınıfından çıkması daha doğaldır;

    · ilgisiz sınıflar: böyle bir sınıf fiyat sınıfıdır (işle doğrudan ilgili değildir) bankacılık ağı);

    · belirsiz tanımlanmış sınıflar: bu sınıflar şunlardır: kayıt_tutma_hizmeti ve güvenlik kontrolü (bu hizmetler işlemin bir parçasıdır), sistem (bizim durumumuzda ne olduğu açık değildir),banking_network (PS'nin tamamı bankacılık ağına hizmet edecektir);

    · Öznitellikler: veri gönderme, hesap verileri, para (müşteriye kasiyer veya ATM tarafından verilen veya kasiyer tarafından kabul edilen gerçek para anlamına gelir), makbuz (müşteriye parayla birlikte verilir) nitelik olarak daha doğaldır;

    · uygulama yapıları yazılım ve erişim gibi açık adlar; onlar da olası sınıf adları listesinden çıkarılmalıdır.

    Olası sınıfların tüm gereksiz isimlerini eledikten sonra, tasarlanan bankacılık sistemini oluşturan aşağıdaki sınıfların listesini elde ederiz (bu sınıflar Şekil 2.5'te gösterilmektedir):

    2.3.2. Veri sözlüğünün hazırlanması.İşte projede kullanılan sınıfların tanımlarını içeren veri sözlüğünün bir bölümü.

    ATM (ATM) - müşterinin kartını tanımlama için kullanarak kendi kablolamasını gerçekleştirmesine izin veren bir terminal. ATM (ATM), almak için müşteri ile etkileşime girer. gerekli bilgi gönderme için, doğrulama ve göndermede daha fazla kullanım için gönderme bilgilerini merkezi bilgisayara gönderir ve müşteriye para ve bir makbuz verir. ATM'nin (ATM) ağdan bağımsız çalışmasına gerek olmadığı varsayılmaktadır.

    Bir banka, müşterilerinin hesaplarını tutan ve bir ATM (ATM) ağı aracılığıyla hesaplara erişim yetkisi veren kartlar veren bir finans kurumudur.

    kart - plastik kart, banka tarafından ATM (ATM) ağı üzerinden hesaplara erişim yetkisi veren müşterisine verilir. Her kart, ulusal banka kartı standartlarına göre kodlanmış bir banka kodu ve kart numarası içerir. bank_code, bir konsorsiyum içindeki bir bankayı benzersiz şekilde tanımlar. Kart_numarası, kartın erişime sahip olduğu hesapları tanımlar. Kart mutlaka tüm müşteri hesaplarına erişim sağlamaz. Her kart yalnızca bir müşteriye ait olabilir, ancak birden çok kopya mevcut olabilir, bu nedenle aynı kartın aynı anda birden fazla ATM'den (ATM) kullanılmasına dikkat edilmelidir.

    Kasiyer, nakit terminallerinden işlem yapma, ayrıca müşterilere para ve çek kabul etme ve verme hakkına sahip bir banka çalışanıdır. Her kasiyerin çalıştığı işlemler, para ve çekler kaydedilmeli ve doğru bir şekilde muhasebeleştirilmelidir.

    Cash_terminal - kasiyerin müşteriler için işlem yaptığı terminal. Kasiyer parayı ve çekleri kabul edip dağıttığında, cash_terminal makbuzları yazdırır. Teller_terminal, kaydı doğrulamak ve tamamlamak için bank_computer ile iletişim kurar.

    Bir müşteri, bir veya daha fazla banka hesabının sahibidir. Müşteri, bir veya daha fazla kişi veya kuruluştan oluşabilir. Başka bir bankada hesabı olan aynı kişi, başka bir müşteri olarak kabul edilir.

    Bank_computer - ATM (ATM) ağı ve bankanın kendi POS terminalleri ile etkileşime giren, bankaya ait bir bilgisayar. Bankanın kendi dahili bilgisayar ağı faturaları işlemek için, ancak burada yalnızca ATM ağı ile iletişim kuran bank_computer'a bakıyoruz.

    Konsorsiyum, ATM (ATM) ağının çalışmasını sağlayan bir bankalar birliğidir. Ağ, banka işlemlerini konsorsiyuma gönderir.

    Gönderme - bir müşterinin hesaplarında belirli bir işlem dizisini gerçekleştirmek için tek bir entegre istek. ATM'lerin (ATM'ler) yalnızca para dağıttığı, ancak çek basmaktan veya para ve çek kabul etmekten dışlanmaması önerilmiştir. Henüz gerekli olmamakla birlikte, gelecekte farklı müşterilerin hesaplarının eşzamanlı olarak işlenmesi olasılığını sağlayacak olan sistemin esnekliğinin sağlanması da istenecektir. Çeşitli işlemler uygun şekilde dengelenmelidir.

    Hesap - gönderilerin yapıldığı tek bir banka hesabı. Hesaplar olabilir çeşitli tipler; Bir müşterinin birden fazla hesabı olabilir.

    Central_computer - işlemleri ve bunların sonuçlarını ATM'ler (ATM'ler) ve banka bilgisayarları arasında dağıtan bir konsorsiyuma ait bilgisayar. Merkezi bilgisayar banka kodlarını kontrol eder, ancak herhangi bir kayıt yapmaz.

    2.3.3. Bağımlılıkların tanımı. Bölüm 2.2.3'teki önerileri takiben, açık ve örtülü olanları ayırıyoruz sözlü dönüşler sorunun ilk ifadesinden ve olası bağımlılıkların adları olarak düşünün. Bankacılık ağı probleminin ifadesinden (bkz. Bölüm 1.3), aşağıdaki terimler çıkarılabilir:

    Fiil yapıları (açık ve örtük):

    bankacılık ağı içerir kasiyerler ve ATM'ler

    konsorsiyum dağıtır ATM gönderme sonuçları

    Banka sahibi banka bilgisayarı

    banka bilgisayarı destekler hesaplar

    Banka sahibi nakit terminalleri

    Nakit terminali etkileşime girer banka bilgisayarı ile

    kasiyer tanıtır hesapta yayınlama

    ATM'ler etkileşime girmek kablolama sırasında merkezi bilgisayar ile

    merkezi bilgisayar etkileşime girer banka bilgisayarı ile

    ATM kabul eder kart

    ATM iletişim kurar kullanıcı ile

    ATM sorunlar peşin

    ATM baskılar gelirler

    sistem yönetir toplu erişim

    Banka sağlar yazılım

    konsorsiyum içerir bankalar

    konsorsiyum sahibi merkezi bilgisayar

    sistem sağlar Kerestecilik

    sistem sağlar emniyet

    Müşteriler sahip olmak kartlar

    Kart erişim sağlar hesaba

    Bankada sert kasiyerler

    Ardından, paragraf 2.2.3'te formüle edilen kriterleri kullanarak gereksiz veya yanlış bağımlılıkları hariç tutuyoruz:

    · hariç tutulan sınıflar arasındaki bağımlılıklar: aşağıdaki bağımlılıklar hariç tutulmuştur: Bankacılık ağı içerir kasiyerler ve ATM'ler (banking_network sınıfı hariç), ATM baskılar makbuzlar (makbuz sınıfı hariç), ATM sorunlar nakit (para sınıfı hariç), Sistem sağlar günlük kaydı (record_keeper_service sınıfı kullanımdan kaldırıldı), Sistem sağlar hesap yönetimi güvenliği (security_service sınıfı hariç), Bankalar sağlamak yazılım (software_software sınıfı hariç);

    · alakasız bağımlılıklar ve uygulamayla ilgili bağımlılıklar: bağımlılık "Sistem yönetir"paylaşım" uygulamayla ilgili olarak hariç tutulur;

    · hareketler"ATM" gibi bağımlılıklarla tanımlanır. kabul eder kart" ve "ATM iletişim kurar with user"; bu bağımlılıkları hariç tutuyoruz;

    · eğitim bağımlılıkları: bağımlılık "Kasiyer" tanıtır hesap üzerinden gönderme" iki ikili bağımlılığa ayrıştırılır "Kasiyer tanıtır kablolama" ve "Kablolama anlamına gelir hesap". Bağımlılık "ATM"ler etkileşime girmek gönderim sırasında merkezi bilgisayarla" "ATM"lere ayrıştırılır. etkileşime girmek merkezi bilgisayar ile" ve "Kablolama ile başlar ATM";

    · bağımlılık türevleri: bağımlılık "Konsorsiyum dağıtır ATM "ler", "Konsorsiyum" bağımlılıklarının bir sonucudur sahibi merkezi bilgisayar" ve "ATM"ler etkileşime girmek merkezi bilgisayar ile

    Gereksiz bağımlılıkları kaldırarak, aşağıdaki bağımlılık listesini alırız:

    Banka sahibi banka bilgisayarı

    banka bilgisayarı destekler hesaplar

    Banka sahibi nakit terminalleri

    Nakit terminali etkileşime girer banka bilgisayarı ile

    kasiyer tanıtır kablolama

    kablolama anlamına gelir hesap

    ATM'ler etkileşime girmek merkezi bilgisayar ile

    kablolama başlar ATM'li

    merkezi bilgisayar etkileşime girer banka bilgisayarı ile

    konsorsiyum içerir bankalar

    konsorsiyum sahibi merkezi bilgisayar

    Müşteriler sahip olmak kartlar

    Kart erişim sağlar hesaba

    Bankada sert kasiyerler

    Kalan bağımlılıkların anlamını şu şekilde geliştirelim:

    · yeniden isimlendirmek anlamlarını daha net hale getirmek için yanlış adlandırılmış bağımlılıklar; yani computer_bank bağımlılığı destekler hesapları bağımlılık Bankası ile değiştirmek daha uygundur tutar hesaplar.

    · rol adları ATM bağımlılığı için olduğu gibi, bağımlılığa dahil olan sınıfların adlarından net oldukları için kullanılamazlar. etkileşime girmek merkezi bir bilgisayar ile;

    · açıklanmayan bağımlılıklar: kablolama başlar cash_terminal'den Müşteriler sahip olmak hesaplar, gönderme kayıtlı kart modele eklenmelidir.

    Bağımlılıkları açıklığa kavuşturduktan sonra, oluşturabilirsiniz Orijinal versiyon nesne diyagramı. Ele alınan problem için, Şekil 1'de gösterilen forma sahip olacaktır. 2.37.

    Pirinç. 2.37. Bankacılık ağı için nesne diyagramının ilk versiyonu

    2.3.4. Niteliklerin iyileştirilmesi. Paragraf 2.2.4'te formüle edilen kriterleri uygulayarak şunları elde ederiz:

    Kart, banka_kodu ve kart_kodu içerir; kart sınıfındaki nesnelerin öznitelikleri olarak kabul edilebilirler, ancak banka_kodu bir banka seçimi sunarak konsorsiyum-banka bağımlılığının çokluğunu azalttığından, bunları niteleyici olarak kullanmak daha uygundur; İçin benzer kullanım card_code Banka bağımlılığını eklemeniz gerekir Salıverme niteleyicisi card_code olacak kart.

    Yukarıdaki değişiklikleri yaptıktan sonra, diyagram Şekil 1'de gösterilen formu alacaktır. 2.38.

    2.3.5. Kalıtım kullanarak bir sınıf sistemi düzenleme. Bu örnekte, çeşitli terminalleri tanımlayan nesneler için üst sınıflar tanımlamak doğaldır: cash_terminal ve ATM (ATM) ve işlemleri tanımlayan nesneler için: cashier_transaction ve remote_transaction (ATM'den).

    Uygun değişiklikleri yaparak, Şekil 1'de gösterilen nesne diyagramını elde ederiz. 2.39.

    Pirinç. 2.38. Niteliklerin iyileştirilmesinden ve niteleyicilerin eklenmesinden sonra bankacılık ağı için nesne diyagramı

    Pirinç. 2.39. Kalıtımla bankacılık için nesne diyagramı

    2.3.6. Modelin daha da geliştirilmesi. Kart iki varlıkta hareket eder: müşterinin hesaplarına erişmesini sağlayan bankada (hesap cüzdanı) bir kayıt birimi olarak ve ATM'nin çalıştığı bir veri yapısı olarak. Bu nedenle, kart sınıfını iki sınıfa ayırmak uygundur: card_registration ve card; bu sınıflardan ilki, müşterinin banka hesaplarına erişmesini sağlar ve ikincisi, ATM'nin birlikte çalıştığı veri yapısını tanımlar.

    Kayıt, hesaplarda ve diğer bankacılık belgelerinde üzerinde anlaşmaya varılan bir değişiklik yapma sırası olduğundan, kayıt sınıfını değişiklik sınıflarının bir toplamı olarak temsil etmek uygundur; Banka belgeleriyle çalışırken üç tür değişiklik göz önünde bulundurulur: para çekme, yerleştirme ve talep.

    Bank sınıfını bank_computer sınıfıyla ve konsorsiyum sınıfını Central_computer sınıfıyla birleştirmek doğaldır.

    Pirinç. 2.40. Bankacılık ağı için nesne diyagramının son görünümü

    Yukarıdaki değişiklikleri yaptıktan sonra, nesne diyagramı Şekil 1'de gösterilen formu alacaktır. 2.40. Bu, ön tasarım aşamasındaki nesne modelinin yapımını tamamlar. Nesne modelinin daha fazla iyileştirmesi, sistemin yaşam döngüsünün sonraki aşamalarında yapılacaktır.

    Alt sistemlerin seçimi

    2.4.1. Bir alt sistem kavramı. Dolayısıyla, PS birbirine bağlı bir nesneler kümesidir. Her nesne, değerleri nesnenin durumunu belirleyen bir dizi özellik ve bu nesneye uygulanabilecek bir dizi işlem ile karakterize edilir. Bir PS geliştirirken, nesnelerin tüm niteliklerinin özel olduğunu düşünmek uygundur (yani, nesnenin dışında mevcut değildirler ve bir nesnedeki başka bir nesnenin özniteliğinin değerini bulmak veya değiştirmek için, elbette böyle bir işlem tanımlanmışsa, bu nesnenin açık işlemlerinden birini kullanmalısınız). Nesne işlemleri genel veya özel olabilir.

    Böylece, her nesnenin kesin olarak tanımlanmış bir arayüz, yani bu nesneye uygulanabilecek bir dizi genel işlem. Aynı sınıftaki tüm nesneler aynı arayüze sahiptir. Bir sınıfın (ve sonuç olarak, bu sınıfın her nesnesinin) arabirimi, genel (genel) işlemlerinin (ve bunları uygulayan yöntemlerin) imzalarının bir listesiyle belirtilir; kapalı işlemlerin imzaları, ilgili sınıftaki nesnelerin arayüzüne dahil edilmez.

    Sistem nesne modeli, sistemi oluşturan birbirine bağlı nesneler kümesini tanımlar ve bu nedenle sistem içinde mevcut olan arabirimler kümesini tanımlar. Sistem içindeki (yani, sistemin parçası olan her bir nesnedeki) tüm veri işleme yetenekleri, tanımlayan bu arayüzler seti tarafından tanımlanır. iç ortam(veya Çarşamba) sistemler.

    Sistemin iç ortamı ile birlikte, biri onun tanımını yapabilir. dış ortam. Sistemin bir parçası olarak uygulanan işlevler (işlemler) tarafından belirlenir. yazılım(yani işletim sistemi, programlama sistemi, çeşitli editörler, DBMS, vb.) ve ayrıca sistemle birlikte kullanılan diğer uygulama sistemleri ve kitaplıklarda. Sistemin dış ortamını oluşturan nesnelere ve işlemlere sistem içerisinden de erişilebilir. Bunu akılda tutmak için, nesne modeline, arayüzü sistemde kullanılan dış ortamın özelliklerini temsil edecek başka bir nesne eklenebilir (böyle bir arabirim genellikle dış ortamın yeteneklerinin yalnızca bir alt kümesini temsil eder). Ancak, dış ortam bir değil, birkaç nesne tarafından uygulandığı için bu tamamen doğru olmaz. Öte yandan, sistemin içinde, dış ortamın yapısını dikkate almak için hiçbir neden yoktur. Bu çelişkiden çıkış yolu, başka bir varlığı - alt sistemi - dikkate almaktır.

    alt sistem bazı işlevsellikler sağlayan ve arayüzlerine göre birbirleriyle etkileşime giren bir dizi nesne ve alt sistemdir. Alt sistem arayüzü temsil etmek altküme bu alt sistemi oluşturan tüm nesnelerin ve alt sistemlerin arayüzlerinin birleştirilmesi. Bir alt sistem, bir veya daha fazla birbirine bağlı nesne ve/veya alt sistem içerebilir.

    Birlikte belirli bir alt sistemi oluşturan nesnelerin (ve alt sistemlerin) arayüzleri kümesi, iç ortam bu alt sistem Her alt sistem, temsil eden bir ortam alt sistemi içermelidir. dış ortam bu alt sistem Kesişen bir örnek olarak düşünülen bankacılık hizmet sistemi için ortam alt sistemi, şekil 2'de gösterilmektedir. 2.41. Ortam alt sistemi arayüzü, tasarlanan sistemin hangi yazılım ortamında çalışacağını ve çalışması sırasında bu ortamın hangi özelliklerinin kullanılacağını belirler (bu, ortamın tek tek bileşenlerinin değiştirilmesi veya değiştirilmesi gerektiğinde önemlidir).

    Çevre alt sisteminin, bankacılık hizmet sisteminin dış ortamıyla yalnızca arayüzünü temsil ettiğini unutmayın. Bankacılık hizmet sisteminin dış ortamı birkaç alt sistem ve kitaplıktan oluşur ve bunun için geliştirilmekte olan sistemi de içerebilen bir nesne modeli de geliştirilebilir (bu nesne modelinde alt sistemlerden biri olacaktır).

    Bankacılık hizmet sisteminin ve sistem (dış) ortamının nesne modeli, bir nesne diyagramı biçiminde de gösterilebilir (gerçi bu nesne diyagramı nesneleri değil, yalnızca alt sistemleri içerecektir; her bir alt sistem, diyagramda çift dikey kenarlı bir dikdörtgen olarak gösterilmiştir). Bu nesne diyagramında (Şekil 2.42) gösterilen alt sistemler arasındaki bağımlılıklar, tasarlanan bankacılık sistemi ile karşılık gelen alt sistemlerin sistemin çalışması sırasındaki etkileşimini yansıtır. Böylece tasarlanan sistemin sistem ortamına olan gereksinimleri belirlenir.

    Pirinç. 2.41. Sistem ortamı ile arayüzü belirten bankacılık ağının nesne diyagramı

    Pirinç. 2.42. Bankacılık ağının ve sistem ortamının nesne diyagramı

    Bir alt sistem kavramının tanıtılması ve alt sistemleri nesnelerle (sınıflar) birlikte nesne modeline dahil etme yeteneği, nesne modelinin hiyerarşik yapısını belirler ve çok sayıda farklı nesne ve sınıf içeren oldukça karmaşık yazılım sistemleri tasarlarken OMT metodolojisinin kullanılmasına izin verir.

    2.4.2. arayüzler ve ortamlar. Daha yüksek seviyedeki bir alt sistemi oluşturan nesneler ve alt sistemler çağrılacaktır. bileşenler son. Daha önce belirtildiği gibi, alt sistem nesne modelinin parçası olan her bileşen için, arayüz, yani bu bileşene (nesne veya alt sistem) uygulanabilen bir dizi açık (genel) işlem.

    nesne arayüzü karşılık gelen sınıfın arabirimi tarafından tanımlanır ve genel işlemlerinin (yöntemler) imza listesiyle belirtilir. Alt sistem arayüzü kendisini oluşturan nesnelerin ve alt sistemlerin arabirimleri aracılığıyla şu şekilde tanımlanır: Bir alt sistem, arabirimi bu işlemi içeren bir nesne (alt sistem) içeriyorsa, bir alt sistemin arabirimine bir işlem dahil edilebilir. Arayüzler, bir arayüz tanımlama dilinde açıklanmıştır. IDL (Arayüz Tanımlama Dili).

    Alt sistemdeki (yani, bileşimine dahil olan her bir bileşendeki) tüm veri işleme yetenekleri, bileşenlerinin arayüzleri tarafından belirlenir; alt sistemin dahili ortamı.

    Herhangi bir alt sistem için, bileşenlerinden hiçbirinin arayüzüne dahil edilmesi arzu edilen bir işlem içermediği ortaya çıkarsa, böyle bir işlemi gerçekleştiren bir nesne, bileşimine eklenebilir. Böyle bir nesne denir arayüz nesnesi. Arabirim nesneleri, bir alt sistemin harici arabirimini onunkiyle eşleştirmenize izin verir. dış ortam, yani ele alınan alt sistemle birlikte daha yüksek düzeyde bir alt sistem oluşturan diğer nesnelerin ve alt sistemlerin arayüzleri ile.

    Bankacılık hizmet sistemi örneğinin getirdiği kavramları açıklayalım. Banka alt sistemini bileşiminde ayırmak mümkündür (aslında, sistemde banka alt sisteminin birkaç örneği olacaktır - konsorsiyuma dahil olan her banka için bir tane). Bu durumda, sistemin nesne modeli Şekil 1'de gösterilen şekli alacaktır. 2.43.

    Pirinç. 2.43. Banka alt sisteminin seçilmesinden sonra bankacılık ağının nesne diyagramı

    Aynı zamanda alt sistemlerin, bankanın ve ortamın dış arayüzleri, ATM nesnelerinin ve konsorsiyumun arayüzleri ile birlikte bankacılık hizmet sisteminin iç ortamını oluşturmaktadır. Dış ortamı Şekil l'de gösterilmiştir. 2,42; Bu oluşmaktadır harici arayüzler bankacılık sisteminde kullanılan çeşitli yazılım sistemleri (şekilde bu sistemlerin sadece bir kısmı gösterilmektedir) ve kendi dış arayüzü.

    Nesne yönelimli yaklaşımın kavramsal temeli nesne modelidir. Yapısının ana ilkeleri şunlardır:

    soyutlama;

    kapsülleme

    modülerlik;

    hiyerarşi.

    Soyutlama, bir nesnenin onu diğer tüm nesne türlerinden ayıran en önemli, temel özelliklerinin seçilmesi ve böylece daha fazla inceleme ve analiz açısından ve daha az önemli veya önemsiz ayrıntıları göz ardı ederek kavramsal sınırlarını açıkça tanımlamasıdır.

    Soyutlama, nesnenin temel özelliklerine odaklanarak sistemin karmaşıklığını kontrol etmenizi sağlar. Soyutlama odaklanır Harici Özellikler nesne ve davranışının en önemli özelliklerini uygulamalarının ayrıntılarından ayırmanıza olanak tanır. Belirli bir alan için doğru soyutlama setini seçmek, nesne yönelimli tasarımda büyük bir zorluktur. Soyutlama, alana ve bakış açısına bağlıdır - bir bağlamda önemli olan, başka bir bağlamda önemli olmayabilir. Nesneler ve sınıflar, konu alanının ana soyutlamalarıdır.

    Kapsülleme, özelliklerin ve davranışın tek bir soyutlama içinde ("kara kutu" olarak kabul edilir) fiziksel olarak yerelleştirilmesidir ve uygulamalarını genel bir arabirimin arkasına saklar.

    Kapsülleme birbirinden ayırma işlemidir bireysel elemanlar yapısını ve davranışını belirleyen nesne. Kapsülleme, bir nesnenin dış davranışını yansıtan arayüzünü nesnenin iç uygulamasından yalıtmaya yarar. Nesne yaklaşımı, yalnızca nesnenin kendi işlemleriyle manipüle edilebilen kendi kaynaklarının dış ortamdan gizlendiğini varsayar. Soyutlama ve kapsülleme tamamlayıcıdır: soyutlama, dikkati bir nesnenin dış özelliklerine odaklarken, kapsülleme (veya başka bir şekilde erişimi kısıtlama), kullanıcı nesnelerinin bir nesnenin iç yapısı arasında ayrım yapmasına izin vermez.

    Kapsülleme, bilgi gizleme kavramına benzer. Bu, nesnenin sayısız detayını dış dünyadan gizleme yeteneğidir. Bir nesnenin dış dünyası, sistemin geri kalanı da dahil olmak üzere onun dışındaki her şeydir. Bilgi gizleme, kapsülleme ile aynı faydayı sağlar - esneklik.

    Modülerlik, bir dizi dahili olarak güçlü bir şekilde bağlantılı, ancak zayıf bir şekilde birbirine bağlı alt sistemlere (modüller) ayrışma olasılığı ile ilişkili bir sistemin özelliğidir.

    Modülerlik, bireysel modüllerin bağımsız olarak geliştirilmesine izin vererek sistem karmaşıklığını azaltır. Kapsülleme ve modülerlik, soyutlamalar arasında engeller oluşturur.

    Hiyerarşi, sıralanmış veya sıralı bir soyutlama sistemi, seviyelere göre düzenlenmesidir.

    Karmaşık sistemlerle ilgili ana hiyerarşik yapı türleri, sınıfların yapısı (adlandırmaya göre hiyerarşi) ve nesnelerin yapısıdır (bileşime göre hiyerarşi). Sınıf hiyerarşilerine örnek olarak basit ve çoklu kalıtım (bir sınıf sırasıyla bir veya daha fazla başka sınıfın yapısal veya işlevsel kısmını kullanır) ve nesne hiyerarşileri - toplama verilebilir.

    Sınıflar hiyerarşik bir yapıda düzenlenebilir. dış görünüş kavramsal mantıkta bir sınıflandırma şemasına benzer. Kavramlar hiyerarşisi aşağıdaki gibi oluşturulmuştur. En genel kavram veya kategori olarak, en büyük hacme ve buna bağlı olarak en küçük içeriğe sahip bir kavram alınır. Bu en çok yüksek seviye belirli bir hiyerarşi için soyutlamalar. Sonra bu Genel kavram somutlaştırılır, yani hacmi küçülür ve içeriği artar. Hiyerarşi diyagramında orijinalin bir seviye altına yerleştirilecek olan daha az genel bir kavram ortaya çıkar. Kavramların somutlaştırılması süreci, en alt düzeyde bir kavram elde edilene kadar devam ettirilebilir, bu bağlamda daha fazla somutlaştırılması imkansız veya uygunsuzdur.