Nesneye yönelik programlanmış bir düşüş karakterize edilir. Nesneye yönelik programlama (OOP). OOP ve alt sınıfın gevşetilmesi ilkesi

Herkese merhaba.

OVP'ye adanmış web sitesindeki makalelerin haftası. Hikayenin geri kalanı bende pek çok duygu uyandırdı ve ne yazık ki daha da çürümüş duygular uyandırdı. Artık statüye layık değildim. Neden? Çünkü her türlü olumsuz duyguyu aktarır ve ORP'nin gelişmesine katkı sağlar. Duygular, insanların ORP'nin tam gücünü tam olarak anlayamadıkları ve ORP'nin kötü olduğu gerçeğinden herkesi devralmak istedikleri gerçeğinden mahrumdur. En kötüsü, insanların dinlemeye başlaması ve yararlı bir şey olmadığını düşündüklerine dair açgözlü deliller atmaya başlamasıdır. Bu tür istatistiklerin öğrenciler için daha önce verdiğimden daha kontrendike olduğunu düşünüyorum. :)

Görelim.

ORP nedir? OOP - bu ve GO programlama ve tasarımı. Biri olmadan diğeri, her şeyden biraz daha fazla. Yazılım ürünlerinin tasarımı/programlanması için ORP oluşturuldu. Bu modelleme süreçleri için değildir. Protokollerin tasarımı için değil, yazılım ürünleri ve bunların uygulanması için. Sistemi basitleştirmek için protokolün ve iş sürecinin nasıl uygulanacağı hemen şimdi.

OOP'yi vikorize etmeye başlarsanız ilk yapmanız gereken düşünce nesnesini vikorize etmeye başlamaktır. Zaten en büyük sorunun OVP olduğunu söylemiştik, objektif düşünmeyi öğrenmek daha da zor. Ve daha önce yakomaga sürecini okumak çok önemlidir (yerin türüne, yapıcıya, cepheye benzetmelerle GoF de bu konuda yardımcı olacaktır). Vikorist'in nesne tasarımı ile katlama sistemlerini kolaylıkla tasarlayabilirsiniz.Vikorist'in düşünce nesnesi ile tasarım ne olursa olsun kolaylıkla tasarlayabilirsiniz (tasarımın/programlamanın aynı olması önemlidir, çünkü prensipte kesinlikle -yaku tasarlamak mümkündür) Nesnelerle çalışmak ve aralarında etkileşim kurmak. Tobto. Objektif düşünce olmadan OOP, OOP'un tüm gücünden yararlanmaya başlamanıza izin vermeyecektir.

Daha ileri gidelim. Bu nedenle hedeflerimize ulaşmak için ihtiyaç duyduğumuz nesnelerin soyutlamalarını bilmek adına objektif düşünmemiz önemlidir. Analojiler ve soyutlamalar ortadan kaldırıldığında, artık sistemde ne olduğunu hızlı bir şekilde anlamamıza olanak tanıyan daha net bir resme sahibiz. Ve burada kalıtım ve polimorfizm hakkında düşünmeye başlıyoruz. Bu iki araç, kodu çoğaltmadan sistemi manuel olarak ölçeklendirmek için gereklidir. Ancak bu mekanizmaların gücü, ne ölçüde soyutlamalar ve analojiler edindiğinize bağlıdır. Nesne zihniyetiniz, nesnelerin manuel olarak ayrıştırılmasını formüle etmenize izin vermiyorsa, o zaman çürüme ve çok biçimlilik size yardımcı olmayacaktır. Tobto. Çürüme ve polimorfizm, sistem ölçeklendirme sorununu çözen araçlardan başka bir şey değildir.

Bu araçlar nasıl çalışıyor? Buharda pişirilmiş şalgamlardan daha basittir çünkü her şey bize tanıdık gelen konuşmalara dayanmaktadır. Hayattan basit örnekleri seviyorum:

1. Spadkuvannya. Ben bir fırıncıyım. Hem elektrik hem gaz. Göreviniz, peynirin deri fırında fırıncı olarak hazırlanma sürecini modellemektir. En önemlisi, kodu fırına aktarma işlemi ve fırınların işleyişinin her iki fırın için de aynı olması nedeniyle çok fazla kod kopyasına sahip olacağız. Düşünce nesnesini açarsak ve azaltma aracını hatırlarsak, o zaman yaklaşık olarak başlangıçta onu kaldıracağız (diyagram çok küçük, özür dilerim):
Є pich (soyut pich). Bir davranış var - açın, açın, sıcaklığı artırın ve değiştirin, neyi, neyi ve ne sıcaklığını fırına yerleştirin, açın ve kapatın. Bu, soyut bir nesnenin kapsülleme ilkeleri açısından önemli bir uygulamasıdır (bunları uygularken bunlara uymalıyım). Ben bir fırıncıyım, özel bir fırıncı Ivan. Vin soyut dille nasıl çalışılacağını biliyor. Tobto. Sıcaklığı kontrol edin, ısıtıcıyı açın vb. aklın başına geldi. Güvencenin gücü, Ivan'ımızı elektrikli veya gazlı fırınlar için deri fırınlar için yeniden yazma fırsatımızın olmayacağı gerçeğinde yatmaktadır. Sanırım neden herkes için açık? Ostosovaniye aracının doğru olduğu ortaya çıktı.
2. Polimorfizm. Fırınlar bile farklı şekillerde çalışıyor. Gaz gazı yakar, elektrik ise elektriği yakar. Vikorist ve polimorfizm sayesinde soyut fırının kompaktörlerindeki davranışı kolaylıkla değiştirebiliyoruz.
3. Kapsülleme. Kapsüllemenin temel faydası fırınımın ortasında neler olduğunu bilmek zorunda olmamamdır. Diyelim ki ocağı açmak için yönteme değil, true değerine açılan güç değişimine tıkladım. Şu anda ona ne olacak? Müzakeresizliğin kapsüllenmesi ilkesi olarak o zaman size yatak odasında yaşamaya başlamanızı söyleyeceğim çünkü Sana anlatacağım. Tobto. Fırıncı yatak odasında ne yaptığını biliyor, nasıl çalıştığını biliyor. Veya örneğin fırın sıcaklığını hiçbir zaman daha düşük veya daha yükseğe ayarlayamayız. Kapsülleme ilkesine uymazsak fırına sıcaklığı kontrol etmesini söylemek zorunda kalacağız, ne olacak? Tobto. Fırıncı artık fırınlar hakkında çok şey biliyor. Alıcılar ve ayarlayıcılar değişiklikleri kolayca uygulamamıza yardımcı olacak özelliklerdir. Bu kadar. Heterae ve setter boş olduğundan, bu benim eşit soyutlamamda bunun gerekli olduğu anlamına gelir. Alıcılar ve ayarlayıcılar kapsüllemenin uygulanmasını etkileyemez; bir tasarımcı/programcı kapsüllemeyi yanlış uygulayabilir.

Hangi uygulamada seçilen soyutlama iyidir? Herkes kendi işine bakıyor, FKÖ'nün üç ayağı da ellerinden geleni yapıyor. Gerçek sorun başladığında ben de pis soyutlamayı seçiyorum. Ve işte doğru soyutlamaları seçip seçmediğinizi ve gittiğiniz yönde ayrıştırmanızın doğru (KATI) olup olmadığını anlamanıza yardımcı olacak ayrım standartları.

Ayrıca OOP'un bir başka temel direği olarak soyutlamayı da eklemeye başladılar. Bunun İsveç açısından doğru olduğunu düşünüyorum ama daha çok KEP gibi kokuyor.

Yazma konusunda bana zaten söylendi. Sağda, durgunluk sırasında birlikte çalıştığınız kişinin günlük sorunları yok. Tıpkı mevcut soyutlama düzeyinde olay örgüsünü canlandırmanın sizin için önemli olduğu gibi, o zaman bunu yapmanız da önemli değildir. Pişirmeyi bırakacak mısın? Hayallerinizi mi yaratıyorsunuz? İşte bu... Bu dinamik tiplemenin beni anlamamasını neden umursuyorsunuz? Pişirmek mi istedin? Al onu. Elektriğe ihtiyacınız var mı? Bak, artık benzin alamayacaksın.

Bana verilen istatistiklere, verilen görev çerçevesinde uygun bir soyutlama ve benzetme izmaritleri olmadan getirilen diğer izmaritleri. Zerre.

DTO için Okremo. DTO – zincir modeli. Bilgileri başka bir topa, başka bir sisteme, kısacası nereye aktaracağını aktarabilecek bir nesne oluşturmanıza olanak sağlar. Ona neden bir nesne olarak bakamadığım benim için bir gizem haline geldi. Süperlik nerede? Konteynerde ne var? Ne olmuş?? Bu nesne, DTO'nun bir nesne ve ayrıştırmanın parçası olduğu, verili bir soyutlama düzeyinde incelediğim nesne modeli çerçevesindedir.

Ayrıca dil hakkında ne söyleneceği de belli değil. Yazılım, yazılım ve dilden bağımsız nesne tabanlı bir yaklaşım tasarlayabilirim. Nesnelerle çalışmaya yönelik temel araçları uygulamazsa tasarladığım sistemi uygulamak zor veya imkansız olur.

Ayrıca konuşma eylemlerinin nesnelerin görünümünden ve onların karşılıklı ilişkilerinden tespit edilemeyeceği de görülmektedir. Sorunun ne olduğunu merak ediyorum. Sadece doğru soyutlamayı seçmeniz gerekiyor. Bir protokolün uygulanması, bir veritabanı erişim topu, bağlantı eklentileri, bir görev yöneticisi, bir iş süreci, bir iş süreci tasarım sistemi vb. olsun. Kolayca bir nesne olarak tanımlanabilecek her şey ve bunların karşılıklı etkileşimi. Her şey nesneler ve aralarındaki etkileşim olarak uygulanabilir. İyi ve kötü çoğu zaman zihninizin nesnel düşünme yeteneğinin ötesindedir.

Özetle. ORP'nin gücünü anlamıyorsanız, her şeyi gördükten sonra nesnel bir zihin geliştirmeniz gerekir.

Not: Son makaleden önceki yorumlarda, gerçek insanların vahşeti konusunda açıkça fazla ileri gitmiştim. Tekrar soracağım.

Nesne yönelimli programlama neden çoğu projede başarılı oluyor? OOP, bu karmaşıklıkla mücadele etmenin etkili bir yolunu önermektedir. Programa bir dizi yazılı talimat olarak bakmak yerine, belirli yetkilere sahip bir grup nesneyi temsil eder ve onlarla belirli eylemler gerçekleştirir. Bunun amacı daha net, güvenilir ve takip edilmesi kolay eklemeler oluşturmaktır.

Diğer yaklaşımlarda farklılıklar bulunması nedeniyle temel ilkeler oluşturulmuştur. Bunlar arasında verilere erişim eksikliği ve değişiklik yapma konusunda kısıtlamalar getiren çok sayıda bağlantı yer alıyor. Bu nedenlerin farkında olmaları, ORP'nin programlandığı gibi avantajlara sahip olduğunu anlamaları açısından önemlidir.

Prosedürel filmler

C, Pascal, FORTRAN ve benzeri diller prosedüreldir. Operatörün bilgisayara yaptığı işlemi yapması talimatını verdiği yer burasıdır: verileri kaldırın, sayıları ekleyin, altıya bölün, sonucu görüntüleyin. Prosedürel eklemem bir talimat listesidir. Küçük olduğundan başka herhangi bir organizasyon ilkesine (genellikle paradigma olarak adlandırılır) gerek yoktur. Programcı bir talimat listesi oluşturur ve bilgisayar bunları kaydeder.

İşleve tabi

Programlar büyüdükçe liste hantallaşır. Çok az kişi yüzlerce talimatı bir arada gruplanmadan anlayabilir. Bu nedenle işlev, programları yaratıcıları için daha akıllı hale getirmenin bir yolu haline geldi. Diğer dillerde aynı kavrama alt programlar veya prosedürler denilebilir.

Program, her biri açıkça işaretlenmiş bir arayüze sahip olan işlevlere bölünmüştür.

Prosedürleri alt bölümlere ayırma fikri, bunları modül adı verilen daha büyük bir nesne halinde gruplandırarak genişletilebilir, ancak prensip benzerdir: talimat listelerini oluşturan bileşenleri gruplandırmak.

Fonksiyonlara ve modüllere odaklanmak, ORP'nin ortaya çıkışından önceki birkaç on yıl boyunca demir öncesi paradigma olan yapısal programlamanın dış taşlarından biridir.

Yapısal programlamanın sorunları

Programların parçaları büyüdü ve yapısal programlama zorluklarla karşılaşmaya başladı. Projeler daha katlanabilir hale geldi. Programlar çöküyordu. Daha fazla programcı devreye girdi. Katlanabilirlik arttı. Harcamalar arttı, program çöktü ve çöküş başladı.

Bu başarısızlıkların nedenlerinin analizi, prosedür paradigmasının eksikliklerini göstermektedir. Programlamaya yönelik yapılandırma yaklaşımlarının ne kadar iyi uygulandığına bakılmaksızın, harika programlar inanılmaz derecede karmaşık hale gelir.

İşlem diliyle ilgili bu sorunların nedenleri nelerdir? Öncelikle fonksiyonların global verilere erişimi olmayabilir. Başka bir deyişle prosedürler ve değerler birbiriyle bağlantılı değildir ve gerçek dünyayı kötü bir şekilde modellemektedir.

Bu sorunlara bir envanter programı bağlamında bakmak gerekirse, verilerin en önemli küresel unsurlarından biri envanter birimlerinin bütünlüğüdür. Yeni bir değer girmek, görüntülemek, değiştirmek vb. için çeşitli işlevler bunlara genişletilebilir.

Sınırsız erişim

Örneğin C dilinde yazılmış bir programda iki tür veri bulunur. İşlevin ortasındaki yerel çağrılar ve diğer prosedürler etkilenmez.

Aynı verilere erişimin reddedilmesinden iki veya daha fazla işlev sorumluysa geri kalanlar genel olabilir. Örneğin sigortalanması gereken eşyalara ilişkin bilgiler bunlardır. Global veriler herhangi bir prosedür için mevcut olabilir.

Harika bir programın birçok işlevi ve birçok küresel öğesi vardır. Prosedürel paradigmanın sorunu, aralarında daha da fazla potansiyel bağlantı yaratmasıdır.

Bu kadar çok sayıda bağlantı, bir takım zorlukları da beraberinde getiriyor. Her şeyden önce program yapısını daha karmaşık hale getirir. Başka bir deyişle değişiklik yapmayı zorlaştırır. Global veri öğesinin değiştirilmesi, ona erişebilen tüm işlevleri değiştirebilir.

Örneğin program sigortalanan eşyanın kodunun 5 rakamdan değil 12 rakamdan oluşması gerektiğine inanmak istiyor. Bu nedenle kısadan uzuna geçmelisiniz. Artık kodla ilişkili işlevler yeni formatla çalışacak şekilde değiştirilebilir.

Büyük bir programdaki öğeler değiştiğinde, bunlara hangi prosedürlerin erişebileceğini söylemek önemlidir. Ancak anladığınız gibi bu değişiklik diğer global verilerin hatalı işlenmesine neden olabilir. Her şey birbirine bağlıdır, dolayısıyla bir yerdeki değişiklik başka bir yerle sonuçlanacaktır.

Gerçek dünyayı modellemek

Diğeri ise prosedürel paradigmanın en önemli sorunudur ve bunun verilerin işlenmesiyle ve dünyadaki konuşmanın kötü modellenmesi işleviyle ilgisi vardır. Burada insanlar ve arabalar gibi nesnelerle ilgilenebiliriz. Kokular veri veya işlev açısından benzer değildir. Karmaşık gerçek nesnelerin nitelikleri ve davranışları vardır.

Öznitellikler

İnsanlar için nitelik örnekleri (bazen özellikler olarak da adlandırılır), gözlerin rengi ve koltuğun adı, arabalar için ise kapıların kalınlığı ve sayısıdır. Anlaşıldığı üzere, gerçek dünyanın nitelikleri programınkilerle eşdeğerdir. Kokunun mavi (göz rengi) veya kapı sayısı gibi özel anlamları vardır.

Povedinka

Davranış - gerçek dünyadaki nesnelerin herhangi bir akından korktuğu davranışlar. Patronunuza maaş artışlarını sorarsanız cevap aynı olacaktır. Tavana bastığınızda araba sallanmaya başlıyor. Vimova'nın dişi ve davranış kıçları. Davranış prosedürden önce de benzerdir: Bunu yapmak için çağırırlar ve sonra şunu yapmak için çağırırlar. Dolayısıyla bu işlevler gerçek dünyadaki nesneleri etkili bir şekilde modellemez.

Sorunu çözmek

OOP'ta bir nesne, bir veri koleksiyonu ve bir işlev olarak temsil edilir. Yalnızca C++ üye işlevleri adı verilen prosedürler bir değeri kaldırmanıza olanak tanır. Veriler alındı ​​ve değişiklikten çalındı. Değerler ve işlevler tek bir bütün halinde kapsüllenmiştir. Kapsülleme ve depolama, GOM'ların tanımındaki ana terimlerdir.

Verileri değiştirmeniz gerekiyorsa, hangi işlevlerin onlarla etkileşime girdiği açıktır. Başka hiçbir prosedür bunlara erişimi reddedemez. Bu, programların yazılmasını, geliştirilmesini ve desteklenmesini kolaylaştıracaktır.

Ekleme, üye işlevleri de dahil olmak üzere birbiriyle etkileşime giren çeşitli nesnelerden oluşur.

Günümüzde en yaygın kullanılan programlama C++ (artı-artı)'dır. Java'nın, onu C++'dan daha az zor ve evrensel hale getiren görüntüler, şablonlar ve çoklu kombinasyonlar gibi çeşitli işlevleri vardır. C# hâlâ C++'ın popülaritesine ulaşabiliyor.

Bu C++ üye işlevlerine Smalltalk gibi diğer birçok GO'da yöntem adı verildiğini unutmayın. Bu öğelere nitelik denir. Bildirim için nesne yöntemine tıklayın.

analoji

Şirketin bölümlerinin nesnelerini tanımlayabilirsiniz. Çoğu kuruluşta askeri personel maaşı gereği bir gün kadrolu olarak çalışmamakta, geri kalan gününü ise perakende ticaretle uğraşarak geçirmektedir. Tüm personelinin ciltlerine dikkatli bir şekilde yerleştirilmesini sağlamak önemlidir. Bunlar en son verilerdir: ücret göstergeleri, satışlar, istihdam profilleri vb. Departmanlardaki insanlar kendi bilgileriyle çalışırlar. Şirketin bu şekilde bölünmesi, faaliyetlerinin kontrolünü kolaylaştırmakta ve verilerin bütünlüğünü korumaktadır. Muhasebe, mevcut ailenize ödenen toplam maaş tutarını bilmeniz gerekiyorsa arşivleri karıştırmanıza gerek olmadığını doğruluyor. Tek yapmanız gereken güvendiğiniz bir kişiye not göndermek, o kişinin verilere erişimi olup olmadığını kontrol etmek ve gerekli bilgilerin onayını bulmaktır. Bu, düzenlemelere uygunluğu ve üçüncü taraf teslimatının bulunmamasını garanti eder. Yani FKÖ'deki nesnenin kendisi raporun organizasyonunu sağlayacaktır.

Nesneye yönelimin robotik programın ayrıntılarıyla sınırlı olmadığını unutmamak önemlidir. Çoğu C++ ifadesi, C gibi prosedürel ifadelerin ifadelerine benzer. Aslında, C++ üye işlevleri, C'dekilere oldukça benzer. Yalnızca daha geniş bağlam, bir prosedürel ifadenin konu odaklı olup olmadığının belirlenmesine izin verir.

OOP'daki nesne: anlam

GO-mov'daki varsayılan programlamaya bakıldığında, güç kaynağının başka işlevlerle değiştirilmesi, nesnelerle bağlantıda bir sorun olduğu görülüyor. OOP tasarımı, eklentilerin geliştirilmesini büyük ölçüde basitleştirir. Bunun nedeni yazılım ile gerçek nesneler arasındaki benzerliktir.

OVP'de ne tür konuşmalar nesne haline geliyor? Aşağıda tipik kategoriler bulunmaktadır.

ORP'deki fiziksel nesne:

  • ruhu akış modellerinde taşıma;
  • devre tasarım programlarında elektrik elemanları;
  • ekonomik modelin kenarları;
  • Rüzgar kontrol sisteminde de durum aynıdır.

Koristuvach bilgisayarının çekirdeğinin unsurları:

  • Menü;
  • vikna;
  • grafikler (çizgi, dikdörtgen, renkli);
  • klavye, fare, yazıcı, disk sürücüleri.
  • pratsіvniki;
  • öğrenciler;
  • müşteriler;
  • Satıcılar.
  • kitap görünümü;
  • sağdaki özel subay;
  • sözlük;
  • Nüfuslu alanların enlem ve boylam tablosu.

Gerçek dünyadaki nesneler ile ORP arasındaki bağlantı, birleşik işlevler ve verilerin sonucu haline geldi: kokular programlamada bir devrim yarattı. İşlemsel dillerde böyle bir benzerlik yoktur.

Sınıf

OVP'deki nesneler sınıfların üyeleridir. Bu ne anlama gelir? Programlarınız entegre veri türlerine sahip olabilir. int türü C++'da bir tam sayıdır. Her yıl kaç değişiklik yapılabileceğini duyurabilirsiniz.

Benzer şekilde aynı sınıftan hiçbir nesne yoktur. Bu, tıpkı int'nin değişiklik yaratmaması gibi, işlevlerin ve verilerin de kendilerini oluşturmayan nesnelere dahil edildiği anlamına gelir.

OVP'deki sınıf çok benzer nesnelerin açıklamasıdır. Prince, Sting ve Madonna spivaklarla. Bu isimlere sahip çok fazla kişi yoktur ancak benzer özelliklere sahip oldukları için bu adla anılabilirler. OOP nesnesi bir sınıfın örneğidir.

sakinleşmek

Yaşayan sınıflar alt sınıflara ayrılmıştır. Örneğin canlılar amfibilere, kuşlara, kuşlara, komalara vb. ayrılır.

Bu tür alt sınıfın prensibi, deri sınıfının birbirine benzeyen sınıftan farklı özelliklere sahip olmasıdır. Tüm arabalar tekerleklerini ve motorlarını yıkar. Bunlar ulaşım tesislerinin başlangıç ​​özellikleridir. Derinin kendine has özelliklerinin yanı sıra alt sınıfının da kendine has özellikleri bulunmaktadır. Otobüslerde geniş alan vardır ve minibüslerde önemli eşyaları taşıyacak yer vardır.

Benzer şekilde, bir temel sınıf, özelliklerini otoriteler tarafından eklenenlerden ayıracak şekilde tanımlanabilecek birçok benzer alt sınıfın babası olabilir. Bunu bir fonksiyona indirgemek prosedür programını basitleştirecektir. Kodun birkaç parçasını aynı anda parçalamanız gerekiyorsa gizli öğeleri çıkarabilir ve bunları tek bir prosedüre yerleştirebilirsiniz. Üç program, fonksiyonlarını aktivitelerini iptal etmek için kullanabilir veya kendi işlemlerini iptal edebilirler. Bir grup gezgin için gizlenen verilerin intikamını almak bu temel sınıfa benzer. İndirgeme fonksiyonuna benzer şekilde GO programını kısaltır ve elemanlarının ara bağlantılarını netleştirir.

Tekrar tekrar vikoristannya

Üstelik bir sınıf olarak yaratımlar ve faydalar, hükümetin eklemelerinin tekrar tekrar kullanılması için diğer programlara aktarılabilir. Bu, çeşitli programlara dahil edilebilecek işlevler kitaplığına benzer.

ORP'de düşüş, zengin zaman vikoristiklerinin genişletilmiş bir fikridir. Bu sınıf için, onu değiştirmeden ek işlevlere sahip yeni bir sınıf oluşturabilirsiniz. Orijinal PP'nin yeniden uygulanma kolaylığı OOP'nin önemli bir avantajıdır. Bunun ilk yatırımlardan karlılığın artmasını sağlaması önemlidir.

Yeni veri türlerinin oluşturulması

Nesneler yeni veri türleri oluşturmak için kullanışlıdır. Programın iki boyutlu değerlere (örneğin koordinatlar veya enlem ve boylam) sahip olduğunu ve bunlarla aritmetik işlemler kullanarak uğraşması gerektiğini varsayalım:

konum1 = konum + başlangıç ​​noktası,

de і Origin – bağımsız sayısal değer çiftleri. İki anlam içeren bir sınıfın oluşturulması ve değişken nesnelerinin yok edilmesi, yeni bir veri türü yaratır.

Çok biçimlilik, dönüşüm

Konumsal aritmetikten yararlanan = (eşit) ve + (artı) operatörleri, int gibi türetilmiş türlerle aynı şekilde çalışmaz. Konum nesneleri atanmaz ancak yazılım tarafından ayarlanır. Bu operatörler onlarla nasıl başa çıkacaklarını nasıl biliyorlar? Kanıt, onlara yeni davranış kalıpları verilebileceğidir. Bu işlemler Position sınıfının üye işlevleri olacaktır.

Operatörlerin ve prosedürlerin neyle çalıştıklarına bağlı olarak değişmesine polimorfizm denir. + veya = gibi temel bir operatör, yeni bir veri türüyle baş etme yeteneğini ortadan kaldırırsa, yeniden uygulama yok gibi görünüyor. OOP'yi yeniden tasarlamak bir tür polimorfizmdir. Vona bu önemli pirinci yiyor.

ORP ile ilgili "Aptallar için nesne yönelimli programlama" kitabı, raporun bu konusuyla tanışmak isteyen herkese olanak sağlayacaktır.

Nesne yönelimli temel prensipler ve aşamalar

programlama

Programlama teorisinde OOP, her biri tek bir türe (sınıfa) sahip bir dizi nesne ve bir hiyerarşi oluşturan sınıflar biçimindeki belirli programlara dayanan karmaşık yazılım oluşturmaya yönelik bir teknoloji olarak tanımlanır.

güç düşüşü.

Böyle bir sistemdeki program nesnelerinin etkileşimi aktarım yöntemiyle gerçekleşir.

Not. Programların böyle bir tezahürü ilk olarak 60'lı yıllarda ortaya çıkan Simula katlama sistemlerinin simülasyonunda ortaya çıktı.

Gelişmeleri diğer özel modellemelere (Smalltalk (70'ler) aktararak) modellememizin programlar tarafından sunulmasının doğal bir yolu ve daha sonra

51'den 2. Taraf

FKÖ'nün ana pusuları

Pascal, C++ gibi evrensel programlama dillerinin yeni sürümleri için incelemeler

ORP'nin ana avantajı- Modüller arası çağrı sayısının kısaltılması ve modüller arasında iletilen bilgi miktarının değiştirilmesi,

Modüler programlamaya uygun olarak. Bu, daha fazla veri yerelleştirmesi ve işleme rutinleriyle entegrasyon sayesinde elde edilir.

çeşitli parçaların pratik olarak bağımsız diseksiyonuna olanak tanır

(objektif) program.

Ayrıca nesnel yaklaşım, aşağıdaki gibi yeni teknolojik geliştirme yöntemlerini teşvik eder: düşüş, polimorfizm, kompozisyon, yüzey,

bu da katlanan nesneleri daha kolay tasarlamanıza olanak tanır. Sonuç olarak kodların yeniden düzeltilme göstergesi önemli ölçüde artar,

Çeşitli durgunluk durumları için nesne kitaplıkları oluşturma olasılığı ortaya çıkıyor ve geliştiriciler, gelişmiş katlanabilirlik sistemleri oluşturmanın ek olanaklarını umuyor.

OOP'nin ana dezavantajı, yazılım sisteminin ek katlanabilir organizasyonu ile hız kodunu azaltma yeteneğidir.

OOP aşağıdaki ilkelere dayanmaktadır: soyutlama,

Erişim paylaşımı, modülerlik, hiyerarşi, tiplendirme, paralellik,

dayanıklılık.

Gelin cilt prensibinin ne olduğuna bir göz atalım.

Ab s tra g i r ovan i- nesnel bir alandaki soyutlamayı görme süreci. Soyutlama, bir nesneyi diğer nesne türlerinden ayıran gerçek özelliklerinin bütünüdür.

bu şekilde, belirli bir nesnenin özellikleri daha sonraki bir bakış ve analizle açıkça tanımlanır. Gerçek bir nesnenin soyutlanmasının çözülmemiş bir görev biçiminde kalması gerektiği açıktır: Bir durumda nesnenin biçimini başka bir şekilde belirleriz.

üçüncüsü - bölündüğü malzemeler, dördüncüsü - yıkım yasası

51'den 3. Taraf

FKÖ'nün ana pusuları

konu vb. Mevcut soyutlama hücumu, tüm soyutlama güçlerinin birleşmesini ifade ediyor (analiz edilen bir nesne haline gelir gelmez,

Davranışını bu şekilde tek bir program birimine ayırıyoruz

soyut tür (sınıf).

Erişim kısıtlamaları- bütünün temel özelliklerinden uzaklaşmayan, soyutlamanın uygulanmasına ilişkin çeşitli unsurların dahil edilmesi.

Erişimin birbirine bağlanması ihtiyacı, soyutlama açıklamasının iki bölümünün ayrılmasına yol açar:

arayüz - soyutlamanın uygulanmasına ilişkin mevcut çağrı öğelerinin toplamı (davranışın ana özellikleri);

uygulama - bir soyutlamanın uygulanmasının erişilemez unsurları kümesi (soyutlamanın iç organizasyonu ve davranış mekanizmaları).

OOP'ye erişim değişimi geliştiricinin şunları yapmasına olanak tanır:

Geliştirilmekte olan soyutlamanın spesifik uygulamasına odaklanmadan sistemin tasarımını adım adım oluşturun;

Düzgün organize edildiği takdirde diğer nesnelerin değiştirilmesini gerektirecek belirli nesnelerin uygulanmasını değiştirmek kolaydır.

Bir nesnenin (onun davranışı haline gelecek olan) tüm güçlerinin tek bir soyutlamada birleştirilmesine ve bu güçlerin uygulanmasına erişimin kısıtlanmasına kapsülleme adı verildi.

M o d u l n o s- yazılım sistemi geliştirme ilkesi,

uygulamayı ayrı parçalar (modüller) şeklinde aktaran. Sistemi bir modüle ayırırken, mantıksal olarak bağlı parçaları birleştirmek önemlidir, böylece modüller arasındaki harici bağlantı sayısı güvenli bir şekilde kısaltılabilir. Düşüş ilkesi

51'den 4. Taraf

FKÖ'nün ana pusuları

modüler programlama, bunu takip etmek tasarımı basitleştirecek ve

yazılım geliştirme

Hiyerarşi - sıralanmış veya sıralı bir soyutlama sistemi.

Hiyerarşi ilkesi, yazılım sistemlerinin gelişim hiyerarşisinin tarihi boyunca aktarılır.

OOP'ta iki tür hiyerarşi vardır.

Hiyerarşi “bütün/parça”- Belirli soyutlamaların dahil edildiğini belirtir

Soyutlamaya parçaları olarak bakalım; örneğin bir lambanın tabana katlanması, ipliklerin kavrulması ve ampuller. Hiyerarşinin bu versiyonu, tasarımın çeşitli aşamalarında (mantıksal olarak - konu alanını nesnelere ayırırken, fiziksel olarak - sistemi bir modüle ayırırken ve çok süreçli bir sistemde ilgili süreçleri gözlemlerken) sistemi geliştirme sürecinde geliştirilmiştir. ).

Hiyerarşi “perde arkası/özel”- bu soyutlamanın başka bir soyutlamayla tamamlandığını gösterir, örneğin “genel tablo -

belirli bir masa türü” ve “masalar belirli bir mobilya türüdür.” Vikorist de

karmaşık sınıflar, onlara yeni özellikler eklenerek ve muhtemelen mevcut olanları açıklığa kavuşturarak daha basit olanlara dayanacaksa, sınıfların yapısının genişletilmesi.

OVP'nin en önemli mekanizmalarından biri gizli/özel hiyerarşideki gücün azalmasıdır. Yoğunlaşma aynı zamanda soyutlamalar arasındaki bir ilişkidir; eğer bunlardan biri diğerinin veya birkaç başka soyutlamanın (hem basit hem de çoklu) yapısal veya işlevsel bir parçasıysa

gevşeme).

T i p i z a s i i - nesnelerin gücüne dayatılan değişim ve

farklı türlerin soyutlanmasının birbirinin yerine geçebilirliğini aşan (veya böyle bir değiştirme olasılığı çok güçlü). Dış görünüm programı nesnesinin kesin bir şekilde tiplendirildiği dillerde (değişiklik, alt programlar, parametre vb.)

İnsan, invaziv olmayan bir operasyon anlamına gelen tür karşısında şok oluyor

Yan 5 z 51

FKÖ'nün ana pusuları

ayrı bir yazılım nesnesi olarak. Yukarıda bahsedilen Pascal tabanlı programlama vikoryst'tir ve C tabanlıdır -

Tiplendirmenin orta aşaması.

Yazma ilkesini takip etmek şunları sağlayacaktır:

program nesnelerinde kabul edilemez işlemlerle ilişkili hataların erken tespiti (kesintiler, bir yazılım nesnesi üzerinde herhangi bir işlemin kabul edilebilirliği kontrol edilmeden önce program derleme aşamasında tespit edilir);

basitleştirilmiş belgeler;

Etkili kod oluşturma imkanı.

Bir tür, bir program nesnesiyle statik olarak ilişkilendirilebilir (nesne türü, derleme aşamasında belirlenir - erken bağlantı) ve dinamik olarak (nesne türü yalnızca program başlatıldıktan sonra belirlenir - daha sonra bağlantı). Programlamamızda geç iletişimin uygulanması, farklı sınıflara ait nesneler üzerinde değişiklikler - göstergeler oluşturmanıza olanak tanır (polimorfik nesneler), bu aslında dilin olanaklarını genişletir.

P a r a l e l i z m- o zaman, bir dizi soyutlamanın gücü aynı anda aktif aşamaya aktarılır. tüm işlemleri iptal edin.

Tamamen düşük bir düzen vardır ve bunlardan en önemlisi, belirli eylem dizilerinin derhal sonuçlandırılmasıdır. Önümüzdeki böyle günlere kadar,

Örneğin, bir takım süreçlerin otomatik olarak işlenmesi gibi bir görev var gibi görünüyor.

Bu tür bir görev çok işlemcili sistemlerde uygulandığında, dış görünüm sürecini aynı işlemciyle kontrol etmek mümkünse gerçek paralellik elde edilir. Tek işlemcili sistemler, işlemcinin yarım saatini farklı işlemler arasında paylaşmak için paralelliğe sahiptir. Seçilen işletim sisteminin türüne bağlıdır (tekli veya çoklu program)

Yan 6 z 51

FKÖ'nün ana pusuları

Yaklaşık bir saat sonra dağılmakta olan bir sistemle karşı karşıya kalabiliriz (örneğin

MS DOS) veya özel bir işletim sistemi (Windows sistemleri gibi).

Biz- soyutlamanın gücü, belirli bir yazılım nesnesine yol açan süreçten ve/veya adres alanından hangi yaratım türüne hareket eden alandan bağımsız olarak ortaya çıkar.

Bölmek:

∙ hesaplama gibi eylemlerin ara sonuçlarını kaydeden zamana dayalı nesneler;

∙ alt programların ortasında bulunan yerel nesnelerin yaşam saatleri, alt programın yanıtından tamamlanana kadar hesaplanır;

∙ küresel nesneler, açıkçası program hala gizemden etkileniyor;

∙ kaydedilen nesneler, verileri bilgisayar programı oturumları arasında harici bellek dosyalarına kaydedilir.

Tüm ilkeler, nesne yönelimli bilgisayarların farklı versiyonlarında uygulandıkları şekilde tanımlanır.

Nesne yönelimli programlama. Dil önemlidir nesne odaklı,Yeni uygulamada olduğu gibi yukarıda ele alınan yedi ilkeden ilki hayata geçiriliyor.

Delphi ve C++Builder nesne modelleri özellikle popülerdir. Bu modeller MS DOS için OOP ile güncellenmiştir ve bazı yeni özellikler içermektedir,

Katlama sistemlerinin verimli bir şekilde oluşturulmasını sağlamak. Bu modeller temel alınarak Windows programlarının geliştirilmesine yönelik görsel ortamlar oluşturuldu.

Windows altında programlamanın kolaylığı belirginleşti

programlama teknolojisinin birçok öğesini "depolayan" özel nesne kitaplıkları oluşturmanın maliyetini azaltır.

Yan 7 z 51

FKÖ'nün ana pusuları

Wiki tabanlı OOP'tan yazılım sistemlerinin geliştirme aşamaları.

ORP verileriyle yazılım geliştirme süreci birkaç aşamayı içerir: analiz, tasarım, geliştirme, değişiklik.

Gelin aşamalara bir göz atalım.

Çok güzel. Meta-analiz - bitkinin en eksiksiz açıklaması. Bu aşamada konu bilgi alanının analizi sona erer, parçalanan sistemin nesne ayrıştırması yapılır ve nesnelerin davranışının en önemli özellikleri belirlenir (soyutlamanın tanımı). Analiz sonuçlarının ardından, yazılım ürününün yapısal diyagramı, ana nesneleri ve aralarında iletilen bilgileri gösterecek şekilde parçalanır ve ayrıca soyutlamanın bir açıklamasıyla sona erer.

Tasarım. Bölmek:

daha mantıklı tasarım, Bir karar verildiğinde operasyonun (işletim sistemi ve ekipmanın) aklına yalan söylememek pratiktir;

fiziksel tasarım, Kardeşlerini şereflendiren kişi memur olarak atanmıştır.

Daha mantıksal tasarım sınıfların yapısının gelişiminde yatmaktadır:

Depo nesnelerinin saklanmasına yönelik alanlar ve yöntem algoritmaları tanımlanır ve nesnelerin davranışının yönleri uygulanır. Bu durumda baktığımız şeylere bakarız ve sınıf ayrımını (azalma, azalma) kabul ederiz.

kompozisyon, yüzey, polimorfizm vb.). Sonuç, sınıfların ara bağlantılarını ve sınıfların tanımını yansıtan bir hiyerarşi veya sınıf diyagramıdır.

Fiziksel tasarım modül için sınıf tanımlarının bir kombinasyonunu, bağlantı şemalarının seçimini (statik veya dinamik düzen), ekipmanla etkileşim yöntemlerinin seçimini içerir,

işletim sistemi ve/veya diğer yazılımlar (örneğin,

veritabanları, kenar bantlama programları), paralel işleme sistemleri için süreçlerin senkronizasyonunun sağlanması vb.

Yan 8 z 51

FKÖ'nün ana pusuları

Ben bunlarla birlikte evrimleşiyorum. Bu adım adım uygulanan bir süreçtir ve

Sınıfların projeye bağlanması Süreç, ana programın ve gelecek yazılım ürününün projesinin oluşturulmasıyla başlar. Daha sonra kaba bir sınıf oluşturacak şekilde veya mümkünse sınıflar uygulanır ve bağlanır.

Yaklaşan sistemin çalışan prototipi. Test edildi ve geliştirildi.

Örneğin, böyle bir prototip, bir yazılım ürününün ana arayüzünün uygulanmasını içeren bir sistem olabilir (sistemin bir kısmının tamamlanmadığı günü bilgilendirmek için transfer). Sonuç olarak, ürün için örneğin açıklama amacıyla gösterilebilecek bir prototip seçiyoruz. Daha sonra, örneğin ana menü öğesinin uygulanmasıyla ilişkilendirilen bir grup sınıf sisteme bağlanır.

Alternatif seçenek de test edilir ve geliştirilir ve sistemin tüm yetenekleri gerçekleşene kadar bu şekilde devam eder.

Bu adım adım uygulama, yazılım ürününün test edilmesini ve geliştirilmesini önemli ölçüde basitleştirir.

Değişiklik. Bu, yeni işlevsel yetenekler ekleme ve sistemin temel güçlerini değiştirme sürecidir. Kural olarak,

Değişiklikler, sınıfın uygulanmasını tamamlar ve arayüzünü değiştirmeden ayrılır, böylece değişiklik süreci yerel alanı kapsadığından vicoristan ORP'den herhangi bir özel rahatsızlık olmadan kaçınılabilir.

Arayüzü değiştirmek de zor bir iş değildir, aksi takdirde bu çözüm, diğer program sınıflarında değişiklik gerektiren nesnelerin etkileşimi için süreçlerin iyileştirilmesini gerektirebilir. Ancak arayüz kısmındaki bazı parametrelerin modüler programlamaya uygun olarak kısaltılması bu süreci büyük ölçüde basitleştirir.

Modifikasyonun basitliği, yazılım sistemlerinin, geliştirilmesine çok fazla zaman ve maddi kaynak harcanan sistemlerin ömründen daha fazla saat harcandıkça değişen operasyon zihniyetlerine kolayca uyarlanmasını mümkün kılar.

Yan 9 z 51

FKÖ'nün ana pusuları

OOP'un özellikleri, bir nesnenin veya nesne grubunun ayrı ayrı ayrılabilmesi ve tasarımının da farklı aşamalarda gerçekleştirilebilmesidir. Örneğin, arayüz sınıfları zaten uygulanmıştır ancak etki alanı sınıflarının yapısı hala belirlenmektedir.

Tasarım, analiz sürecinde konu alanının herhangi bir parçasının tam olarak tanımlanmasıyla başlar.

Nesne tabanlı yaklaşımın ana tekniklerine bir bakış, nesne ayrıştırmayla gösterilmektedir.

Nesne ayrıştırma

Daha önce de tahmin ettiğimiz gibi, modern OOP teknolojisinin kullanılmasıyla çözüm, görünümden geliyor. birkaç fonksiyonel unsurun etkileşiminin sonucu süreçleri olan herhangi bir sistem,

görevin konu alanı nedir?

Böyle bir cilt sistemi, en önemli görev sürecindeki her türlü girdi akışını (bilgi adı verilen) reddeden işlevsel bir öğeye sahiptir.

şarkı eylemini iptal eder (örneğin, güç yapısını değiştirebilir, hesaplamaları ortadan kaldırabilir, bir program hazırlayabilir ve diğer öğeleri dahil edebilirsiniz). Süreç görevi çözer Sıra bilgisi. Sistem, bilgiyi öğeden öğeye aktararak gerekli eylemleri seçer.

Parametreleri ve davranışları, bağımsız davranışa yol açabilecek zihinsel bir göreve atanan sistemin işlevsel öğeleri

(öğe biçimindeki eylemleri "sonuçlandırmak" için), nesnelerin adı kaldırıldı.

Bir konu alanını bilgi alışverişi için bir dizi nesne olarak temsil etme sürecine ne ad verilir? nesne ayrışması.

Yan 10 z 51

FKÖ'nün ana pusuları

Her bir özel durumda nihai nesne ayrıştırmasında ne tür nesnelerin tartışıldığını anlamak için, taklit katlama sistemlerinin farklı davranış modellerinin geliştirilmesine yönelik başlangıç ​​nesne yaklaşımını anlamak gerekir. Bu tür sistemlerin nesne kümesi, modellenen süreçler analiz edilirken belirlenir.

popo. Nesne ayrıştırma (simülasyon modeli

benzin istasyonları). Benzin istasyonlarının sayısı, cilt benzin istasyonuna servis verme parametreleri ve yakıt ikmali taleplerinin yoğunluğu nedeniyle benzin istasyonunda kalan yakıt miktarı konusunda endişelenmemizi lütfen önleyin (tek tür yakıta bakıyoruz) ).

Bu tür bir görevin taklit modellerin kullanımına dayanması beklenmektedir. Model, belirli parametrelerle gerçek bir süreci programlı olarak temsil ederken aynı zamanda özelliklerini de kaydeder. Araştırmacı, hizmet verme ve başvuru alma parametrelerinin farklı değerleriyle simülasyon sürecini tekrarlayarak, yatak analizinin grafikleri olacak özelliklerin belirli değerlerini seçer.

Üç dolum istasyonuna sahip bir benzin istasyonunun işletilmesi süreci aşağıdaki diyagramlarda gösterilebilir.

Dünyada gelişmiş bilgi işlem teknolojisi ve bilgisayarlar daha karmaşık görevler için kullanılmaya başlandı. Bilgisayarların hesaplama karmaşıklığı ve katlama programlarının yazılmasının verimliliği nedeniyle katlama görevlerindeki artışın önemli olduğu ortaya çıktı. Nesne yönelimli programlama(OOP) Vinik'in kendisi, katlama programları oluştururken ortaya çıkan zorluklarla başa çıkmanın etkili bir yoludur.

OOP'un en önemli kısmı, karmaşık programlama görevlerine özel bir yaklaşımdır. nesne yönelimli analiz Ve nesne yönelimli programlama bu yaklaşımı uygulamaya yönelik kullanışlı bir araçtır.

Tarih

FKÖ'nün kurucuları ünlü Norveçliler Cristen Nygaard ve Ole-Johan Dahl'dır. Gemi inşa simülasyonları üzerinde çalışan Nygaard, temel yazılım özelliklerinin bu tür karmaşık programlar oluşturmada etkisiz olduğunu fark etti ve böylece Nygaard, katlanabilirlik ve adını da aldığı gibi çıtanın yükseltilmesine olanak sağlayacak yeni programlama konseptleri geliştirmeye başladı. İlk kez. nesne odaklı(Terimin kendisi Java dilinin yazarı Alan Kay tarafından türetilmiştir). Ole-Johan Dahl Nygaard ile birlikte ORP'nin temel ilkelerini ve bunların uygulanmasına yönelik pratik mekanizmaları analiz ettik ve bunlar daha sonra ilk ORP Simula tarafından geliştirildi. Bu bilim adamlarının erdemleri dünya bilim topluluğu tarafından büyük beğeni topladı ve 2001'de Nygaard ve Dahl, bilgisayar bilimlerinde Nobel Ödülü'nün bir tür benzeri olan Alan Turing Ödülü'nün sahibi oldular.

Mova Simula akademik çevrelerde popülerlik kazandı ancak çeşitli nedenlerden dolayı ticari yazılım geliştiricileri arasında popülerlik kazanamadı. Bu temel fikirler ve ORP olasılığı programcılar için çok çekici hale geldi. Yıllar geçtikçe başka OY'ler oluşturuldu: SmallTalk (1980), C++ (1985), Eiffel (1986), Object Pascal (1986) ve Delphi (1995), Oberon-2 (1991), Java (1991), Visual Basic (1991) ve daha birçokları. Bu şirketlerin faaliyetleri programda endüstriyel standartlar haline geldi.

OOP'un özellikleri

OOP'nin ana fikri, davranışı ve etkileşimi, gerçek dünyadaki nesnelerin davranışına ve etkileşimine benzer olan program yapılarının oluşturulmasını takip etmesi gerçeğinde yatmaktadır (böylece bir program, analoglar değil sanal oluşturabilir) gerçek özlerden). Nesne yönelimli programlama, bu yaklaşımın manuel ve hızlı bir şekilde uygulanması için kolaylıklar sağlamaktan sorumludur.

Günlük yaşamda insanlar, katlanır kutuları basit terimlerle anlamalarını ve ifade etmelerini sağlayan çeşitli "düşünce ekonomisi" yöntemlerine güveniyorlar (diyelim ki). Tipik para tasarrufu teknikleri şunları içerir:

· Soyutlama (ağ dışı ayrıntıların soyutlanması);

· Uzgalnennya (çeşitli nesneler veya nesneler üzerinde gizli işaretler görmek);

· Sınıflandırma (nesneler arasındaki ilişkinin ve benzerlik düzeyinin tanınması).

Bu, insanların gördükleri nesnelerin karmaşıklığı içinde gezinmelerine yardımcı olmanın bir yoludur. Nesne yönelimli programlama aynı zamanda "program karmaşasıyla mücadele etmek" için bu tür özellikler de sağlayabilir. Programlamaya nesne yönelimli yaklaşımı uygulamak için yeni kavramlar tanıtılmıştır:

· Nesneler - işlenmesi için verileri ve algoritmaları entegre eden özel program yapıları;

· Kapsülleme – nesnelerin işleyişinin ayrıntılarının yakalanması;

· Spudkuvannya - yeni sınıflar oluşturmanın “kısayol” yöntemi;

· Polimorfizm – bir fonksiyonun birden fazla uygulamasını birleştirme olasılığı.

Nesneler ve sınıf

Nesneler bu algoritmalardan oluşan özel program birimleridir. aynı verilerin işlenmesi için. Bir nesnenin deposuna giren verilere denir alanlar(Nitelikler, yetkililer, üyeler). Bir nesnenin deposuna giren algoritmalara denir yöntemler(Hizmetler, işlemler, üye işlevleri). Ne yazık ki OVP'de ortak bir yorgun terminoloji yoktur ve bunları anlamak için farklı dillerde farklı terimler kullanılmaktadır.

Klasi- Bunlar nesnel veri türleridir. Tamsayılar bir tamsayı türüne (örneğin, tamsayı veya bayt) ait olduğu gibi, nesneler de bir nesne türüne, yani bir sınıfa aittir. Aynı sınıftaki tüm nesneler aynı alan kümesine ve aynı yöntem kümesine sahiptir.

Ortak dil dillerinde (C++, Java) nesnelere denir. Kopyalarını saklıyorum(örnekler).

Farklı sınıfların ve nesnelerin dezavantajı, veriler ile veri işlemeye yönelik işlevler arasındaki mantıksal (semantik) bağlantıların kontrol edilmesinin önemsiz bir görev olması ve esas olarak derleyiciye (bilgisayar) aktarılabilmesidir - artık verilerin olup olmadığını belirleyebilirsiniz. yanlış düzeltildi.

Kapsülleme

Kapsülleme (kelimenin tam anlamıyla - “alma”) - sınıfın iç yapısı hakkında bilgilerin kontrollü olarak edinilmesi. Bir sınıf, nesnelerin çalışmasını sağlamak da dahil olmak üzere nesneler tarafından kullanılan alanlara ve yöntemlere sahip olabilir (örneğin, dinamik bellekte bir arabellek, çalışma verilerini içeren bir dosya, bu dosyayla çalışma yöntemleri vb.). Bu tür alanları değiştirmek veya bir çağrı nesnesinin yöntemlerine tıklamak güvenli değildir; sisteminize zarar verebilir. Tarla gibi nesnelerin güvenliğini sağlamak için bu yöntem uygulanabilir. yakalamak- Onlardan önce canavarı savun.

"Karmaşıklıkla mücadele" konumundan kapsülleme, nesnelerle çalışmanın doğruluğu üzerindeki kontrolün bir kısmını derleyiciye (bilgisayar) aktarmanıza olanak tanır.

Alanları ve yöntemleri kapsüllemenin farklı olasılıklarını göstereceğiz (tüm alanların otomatik kapsüllenmesine kadar her gün). C++, Java, Delphi, Eiffel vb. gibi nesne dili endüstrilerinde üç düzeyde kapsülleme alanı ve yöntemi bulunur:

· halka açık - ilk kez kamu alanları Nesnelerin yöntemleri arasında ortak bir değişim yoktur;

· korumalı - hemen hadi tarlaları çalalım Bu sınıfın yöntemlerinden ve alt sınıfların yöntemlerinden daha fazla yöntem olamaz;

· özel - doğrudan özel alanlar ve yöntemler bu sınıftaki yöntemlere suçlanabilir.

sakinleşmek

sakinleşmek- kaçınılan öğelerin açıklamalarını atlayarak mevcut sınıflara ek ayrıntılar ekleyerek yeni sınıfların oluşturulması. Miras alındığında yeni sınıf çağrılır sınıfa göre(çocuklar, alt sınıf) ve çıktı sınıfı çağrılır ata sınıfı(Temel, Batkivsky, süper sınıf).

Küçültme, tekrarlanan açıklamaları kapatarak programın boyutunu kısaltacaktır. Ata sınıfta bildirilen tüm alanlar ve yöntemler otomatik olarak alt sınıflara aktarılır ve genellikle çağrılır. reddetmek(tanıtım yapmak).

Babanın yöntemi ne gerektiriyorsa onu yapabilirsin yeniden değer vermek- tobto. Başka bir algoritmanın sınıf platformu yöntemiyle aynı şekilde kullanıldığının farkına varın.

Eylemler teşvik ediliyor çoklu düşüş Bir sınıfın birden fazla sınıf arasındaki tüm gücü ve yöntemleri aynı anda reddettiği bir sistem. Ne yazık ki, destek dil programlamayı ve özellikle de derleyiciyi karmaşık hale getirdiğinden, karışıklığın çoğu mantıksal çakışma durumlarında gizlidir. Bu nedenlerden dolayı çoğu durumda düşüşün büyük kısmı basitçe engellenir, aksi takdirde geri alınabilir.

Tüm ata sınıflarının ve köken sınıflarının toplamına denir Sınıfların hiyerarşisi.

Sınıf yoğunlaşması, doğrudan ve dolaylı olarak diğer kavram ve mekanizmalara dayanan OOP'un merkezi kavramıdır. ORP mekanizmalarının mutlak çoğunluğu, avantajlarını ortaya çıkarabilmek için bir sınıf hiyerarşisine ihtiyaç duyar.

Polimorfizm

Polimorfizm(Kelimenin tam anlamıyla - “form çeşitliliği”) - benzer öneme sahip olabilecek birkaç yöntem (veya işlev) için tek bir adı kullanma yeteneği. Başka bir yorum – bir yöntemin (fonksiyonun) birden fazla uygulama seçeneği olabilir; bu yönteme (işlev) denir polimorfik. Diğer ORP mekanizmalarına benzer şekilde, polimorfizm özellikle karmaşık programların geliştirilmesini kolaylaştırır. Aslında polimorfizm kavramı güçlendiriyor Ne ayrıca para kazanman lazım yakÇekingen olmaya gerek yok.

Gerçek hayattan bir benzetme yaparsak, polimorfizm gerçek hayatla tutarlıdır. Örneğin “müzik” kelimesi “bir müzik aleti çalmak” anlamına gelir. Ancak farklı müzik aletleri farklı şekillerde çalınır. Tek bir terim var ama birçok seçenek var. Yani "müzik" - polimorfik eylem. OOP'ta "müzik yap" şu şekilde onaylanır: polimorfik yöntem Müzik enstrümanlarının cilt sınıfına yönelik uygulaması olan

OOP'ta iki tür polimorfik yöntem vardır kazançі sanal.

Yenileme yöntemleri Vikonanny ile tanındı Farklı türlerdeki verilerden. Farklı isimlerin yanı sıra farklı argüman listeleri ve/veya döndürülen değer türü vardır.

Sanal yöntemler Vikonanny ile tanındı ancak değiştirme işleminin arkasında anlaşmazlık konularında, ancak derslerden kaçınılır. Sanal yöntemlerin farklı adları ve prototipleri vardır. Ana özellikleri, her zaman nesnenin gerçek sınıfına tam olarak karşılık gelmeleridir.

Yeniden tasarlanan fonksiyonların tipik bir örneği Pascal'ın SQR fonksiyonudur. Vaughn sayının karesini hesaplar ve tam argümanlar için sonuç aynı olur, konuşma argümanları için ise konuşulabilir olur.

Sanal yöntemlerin avantajları yalnızca farklı sınıf hiyerarşilerinde ortaya çıkar. Sanal yöntemlerin kullanımına ilişkin tipik bir şema aşağıdaki gibidir:

· Hiyerarşinin ata sınıfı polimorfik bir yönteme sahiptir, bu da derin bir akış anlamına gelir. Bu durumda ya vikorist sanal yöntemi ya da yöntemin kendisi sanaldır.

· Açılış sınıfları için karşılık gelen sanal yöntem yeniden değerlenir; dış görünüm sınıfı için karşılık gelen eylem kendi yöntemiyle yeniden değerlenir.

· Bir ebeveyn sınıfa ait olan bir nesne için çağrı yapıldığında, aslında ebeveyn sınıfın (ata sınıfın değil) sanal yöntemine polimorfik bir yöntem çağrılır.

Sanal yöntemlerin bu şekilde kullanılmasına iyi bir örnek, Delphi veya Visual Basic'in grafik pencere arayüzü sistemidir: grafik arayüzün görünür öğesi bir düğme, bir düğme vb.'dir. - TControl sınıfına uygulanabilir. TControl sınıfı, grafik arayüzün öğelerini boyamak için gelişmiş polimorfik yöntemler sunar ve ekranlarınızı manuel olarak boyama yapabilirsiniz.

Nesne yönelimli programlama 2004 Rock Standardında açıkça tanınmıyor, ancak Obovyazkov Minimumunda uzman öğrenciler için bilgi bilimi yerine bir konu olacak (Riven B): Nesneye yönelik programlama: nesne, bir nesnenin yetkileri, bir nesne üzerindeki işlemler. Nesne yönelimli programlama teknolojisi de orada icat edildi.

Prote OVP, zengin okullarda ve ayrıca okul yardım sayfalarında bilgisayar bilimi (programlama) uygulamasını kolayca geliştirmedi ( Ugrinoviç N.D. Bilgisayar bilimi ve bilgi teknolojileri. 10-11. sınıflar için Pidruchnik, 2005. M: BINOM. Bilgi laboratuvarı). Ayrıca ilkokul için bilgisayar bilimi hazırlık dersi (O. Goryachov'un gözetiminde yazarın ekibi tarafından dikiş dikilmesi. 1.-4. sınıflar) da anlayışı sağlayacaktır. nesne ve yoga yetkililer.

OOP teknolojisi (paradigması), mevcut programlama tekniklerine hakim olmakla ilgili olmaktan çok, altta yatan sorunun nesne modelini geliştirmekle ilgilidir. Bunun için OOP'un temel prensipleri ve gelecekte programlama hakkında iyi bir bilgiye sahip olmak gerekir ve herhangi bir OOP bilgisi zorunlu değildir - OOP'un kurucuları ve teorisyenleri bunun hakkında birden fazla kez yazmışlardır. Bu nedenle, Grade Buch, “Nesne yönelimli tasarım ve analiz” adlı kitabında şu özdeyişi belirtir: “Nesne yönelimli olmayan herhangi bir dilde (nesne yönelimli olmayan) programlar yazabilirsiniz. gramovannya.” OOP teknolojisi algoritmasını tetiklemek için algoritmanın çalıştığı nesnelerin bir listesini formüle etmek, cilt nesnesinin gücünü düşünmek ve bu nesnelerin açıklamalarının etkileşimi sonucunda algoritmayı uygulamak gerekir.

İstatistiklerin daha önce de söylediği gibi, böyle bir yaklaşım karmaşık görevlerin çoğunu basitleştirecektir, ancak okul çerçevesinde (sınırlı sayıda yıl hariç) başlangıç ​​görevlerinin yerine yenilerini bulmak önemlidir, bu nedenle dış dünyada yeni teknolojilerin ORP kullanımıyla aşırıya kaçılmaması için.

Aslında, okulun OVP'si, mevcut profesyonel programlama sistemlerinde görsel ve bileşen programlamanın görünmez bir parçası olarak görülüyor ve nesneler, çeşitli düzeylerde kullanıma hazır nesne kitaplıklarında çalışılıyor - bu ve kütüphanelerin grafik arayüzünü kullanmak için. Windows eklentileri ve zengin evrensel kitaplıklar veri türleri (örneğin, STL C++). Bu kütüphanelerin nasıl kullanılacağını öğrenmek için programlamanızın söz dizimine ilişkin birkaç basit kuralı bilmek ve anlamak yeterlidir. Ancak bu tür bir "bilgi", öğrencileri programımın mesleki gelişimine yaklaştırmıyor veya OVP'nin anlaşılmasına da yol açmıyor. Ale, şarkı, bunda korkunç bir şey yok. Okul bilgisayar bilimleri ve uzmanlaşmış okullarda profesyonel programlar hazırlamaya odaklanmazlar. OOP uygulaması özel bir konudur ve genellikle kendi spesifik uzmanlıklarına yeterince ilgi gösterilmemektedir.

Bazı bilgisayar bilimi savunucularının konumunu tamamen inkar etmeden, okul da dahil olmak üzere eğitim programlaması alanına nesne yönelimli bir yaklaşım yerleştirmek önemlidir, ORP'nin program gibi temel ilkeler olmadan anlaşılamayacağı anlamlıdır. , vikonavetsya, zminna, umova, döngü vb. OOP kavramı aynı zamanda klasik prosedürel programlamayı da içerir (böl. “ Alt programlar"), Einstein'ın mekaniği - Newton'un mekaniği gibi: prosedür programını tek bir nesne olarak tanımlamak mümkündür, basitlik açısından bunu ihmal edeceğiz. Bu nedenle okulda müfredata başlamadan önce temel konuşmaları öğrenmemiz gerekiyor. Modern görsel programlama araçlarıyla (Delphi, Visual Basic, Visual C++) daha az çalışma yeteneği
vb.) esas olarak perde arkası programlamayı öğrenmek için ek tekniklerin kullanılması yoluyla nesneler ve bunların bileşenleri kavramlarına aşina olmak.

Gizli bilgi

OOP, 80 yıllık 20 yüzyıllık bir programlama stilidir. Veri ve talimatların işlendiği prosedürel olanlara ek olarak, nesne yönelimli programlamada bilgiler tek bir varlıkta birleştirilir.

FKÖ'nün ana pusuları

sakinleşmek

ORP'nin diğer bir ilkesi de zayıflatmadır - bir sınıfın, diğerinin yöntemlerini gerçek uygulamalarını tekrarlamadan uyarlama yeteneği. Sıkıştırma, çıktı kodunun fazla sayıda olmasını sağlar.

Polimorfizm

ORP'nin bir diğer prensibi polimorfizmdir. Bu konsept, farklı karmaşıklık derecelerindeki nesneleri yönetmek için farklı koşullara duyarlı tek bir arayüz oluşturabileceğiniz ve görevi anında doğru şekilde uygulayabileceğiniz anlamına gelir.

Movi OOP

OOP ilkeleri, programların büyük bir kısmının bölündüğü C++ ve Java gibi en popüler programlama dillerinde benimsenmiştir. Є ve en az vikorystovuvanі hareketli OVP - Delphi, Object Pascal, Ruby vb.

OOP'un eleştirisi

Bu metodolojinin çoğunlukla olumlu bulgularına rağmen, ORP'nin ilkeleri eleştirmenler tarafından sıklıkla kabul edilmektedir. Tıpkı OOP'un eksiklikleri olduğu gibi.

Her şeyden önce geçiş pürüzsüz. ORP'nin ilkelerini anlamak için, özellikle yalnızca prosedürel dil programlamayla çalışan kişilerin çok fazla zaman harcaması gerekir.

Aksi takdirde, nesnelerin sınıflarını ve belirli uygulama türlerini tanımlamak gerektiğinden çok fazla kapsamlı belgeleme yoktur.

Üçüncüsü, yöntemlerin evrenselliği, parçalanan çıktı kodunun ve programların, bu özel durumda gerekli olmayan işlevler ve yeteneklerle yeniden donatılmasına yol açabilir. Öte yandan hafıza açısından etkisizliğe işaret eder. Bununla birlikte, yabancılaşmış insanların düşünceleri ne olursa olsun, OOP programlarının sayısı giderek artıyor ve programların kendisi de hızla gelişiyor.

Galmuє