:: Меню ::

Головна
  • Про сайт
  • Введення
  • Середовище програмування VB .NET: Visual Studio .NET
  • Вирази, оператори і передача управління
  • Класи і об'єкти
  •  Спадкоємство і інтерфейси
  • Обробка подій і делегати
  • Обробка помилок в VB .NET
  • Форми Windows, графічний вивід і друк
  • Уведення-виведення
  •  Багатопотокові застосування
  • Підтримка баз-даних в VB .NET
  • Короткий огляд ASP .NET
  • Складки .NET, установка додатків і COM Interop
  • Книга для гостей
    Контакти
    Добавити у вибране

    :: Друзі ::

     
     

    :: Лічильники ::

    = =

     

     

     

     

    Osnovy nasledovaniya

    Khotya nasledovanie nicht yavlyaetsya panaceey OOP i vo mnogikh situaciyakh luchshe vospol'zovat'sya interfeysami, nicht stoit polagat', chto ohne nasledovaniya mozhno kak-nibud' oboytis'. Nasledovanie — zamechatel'noe sredstvo, sposobnoe sekonomit' nicht wenige vremeni der i Gewalten... esli im recht pol'zovat'sya. Kriteriy das korrekte ispol'zovaniya prost: nicht ispol'zuyte nasledovanie, esli bei euch net absolyutnoy uverennosti in suschestvovanii logicheskoy das svyazi tipa «yavlyaetsya chastnym sluchaem».
    Klass Und ob'yavlyaetsya proizvodnym da klassa In tol'ko in Band sluchae, esli vy genau znaete, chto seychas i in skol' angenehm otdalennom buduschem ob'ekt Und mozhet ispol'zovat'sya vmesto ob'ekta In i ??? nicht vyzovet der nikakikh Probleme.
    (Pomnite primer iz glavy 4? Oformlyaya vneshtatnogo rabotnika po Regeln f?r obychnykh sotrudnikov, vy erwerben nepriyatnosti s nalogovoy inspekciey. Klass Contractor nicht dolzhen ob'yavlyat'sya proizvodnym da klassa Employee dazhe bei Band, chto "oni obladayut Reihe skhodnykh chert.)
    Nizhe ???? fundamental'nyy Prinzip priveden in slegka izmenennom, bolee abstraktnom vide, orientirovannom an prakticheskoe programmirovanie.
    ????????? klassa Und, proizvodnogo da klassa In, dolzhen normal rabotat' in kazhdom fragmente programmy, kotoromu bei kachestve parametra peredaetsya ????????? Basis tipa.
    Predpolozhim, bei euch imeyutsya funkciya Useit(bth1 ng As In) i ob'ekt athi ng, kotoryy yavlyaetsya ??????????? proizvodnogo klassa A. Sleduyuschiy vyzov dolzhen normal rabotat':


    Uselt(athing)

    Esli all ??? rassuzhdeniya vyglyadyat slishkom abstraktnymi, nizhe priveden vymyshlennyy (i nadeemsya, zabavnyy) primer. Predpolozhim, vy razmyshlyaete ?ber Themen, da kakogo klassa sleduet ob'yavit' proizvodnym klass Managerof Programmers — da Manager ili da Programmer? Vsem izvestno, chto menedzhery nosyat akkuratnye pricheski, poetomu klass Manager dolzhen soderzhat' Methode Sethalrstyle. Und teper' zakroyte glaza i predstav'te tipichnogo programmista, kotorogo vdrug festlegten upravlyat' das zweite programmistami. Zakhochet li on menyat' svoy imidzh? K?nnen vy ob uverenno meldet, chto vyzov vida

    tom.SetHairStyle("sharp razor cut")


    vsegda imeet smysl? Gewi?, sredi programmistov inogda vstrechayutsya ??????????, kotorye zabotyatsya o svoey pricheske, no obo vsekh programmistakh ????? nikak nicht skazhesh'. Moral: klass Managerof Programmers dolzhen byt' proizvodnym da klassa Programmer, und nicht da Manager.

    Nekotorye yazyki pozvolyayut ob'yavit' klass Managerofprogrammers proizvodnym kak da Manager, derma?en i da Programmer. Teoreticheski takaya vozmozhnost' vyglyadit vpolne logichno i privlekatel'no, no an praktike yazyki s mnozhestvennym nasledovaniem (ja ??? nazyvaetsya po-nauchnomu) porozhdayut der massu Probleme. Vmesto mnozhestvennogo nasledovaniya in VB .NET ispol'zuetsya realizaciya neskol'kikh interfeysov. Kak vy vskore uvidite ???? variant znachitel'no prosche i naglyadnee, nezheli klassicheskoe mnozhestvennoe nasledovanie.

    In suschnosti, bei programmirovanii in VB .NET ihr nikak nicht udastsya skryt'sya da nasledovaniya. Dazhe esli vy privykli k des interfeysnomu Stils programmirovaniya Vb5 i Vb6 i schitaete, chto f?r euere Aufgaben dostatochno interfeysov vkupe s vklyucheniem i delegirovaniem, ogranichit'sya eins interfeysami in VB .NET nevozmozhno. Delo in Band, chto ohne ersichtlicher ispol'zovaniya nasledovaniya vy nicht smozhete pol'zovat'sya .NET Framework. Nasledovanie es zalozheno in Anfangsgr?nde das teuere graficheskogo prilozheniya .NET, und takzhe mnogikh vstroennykh klassov kollekciy — dazhe rabota s ob'ektom Folderbrowser svyazana s nasledovaniem!

    Primenenie nasledovaniya bei postroenii graficheskikh prilozheniy in reklamnoy literature VB .NET inogda imenuetsya vizual'nym nasledovaniem. Nicht obraschayte vnimaniya — ??? samoe obychnoe nasledovanie. Chto euer klass yavlyaetsya proizvodnym da Windows.Forms.Form, suti dela nicht menyaet.

    Bolee das, selbst podkhod k primeneniyu nasledovaniya in .NET Framework kak nel'zya luchshe dokazyvaet, chto nasledovanie in ob'ektno-orientirovannom programmirovanii nicht dolzhno polnost'yu vytesnyat'sya interfeysami. Podkhod, primenennyy in .NET Framework, vpolne mozhet primenyat'sya i in euer sobstvennykh Projekte.

    Bei postroenii bibliotek, ispol'zuemykh das zweite programmistami, bek?mmlicher sproektirovannye klassy, proshedshie tschatel'nuyu otladku i testirovanie, mogut ispol'zovat'sya das zweite programmistami in kachestve bazovykh.

    Znakomstvo s nasledovaniem

    Nachnem s povtoreniya nekotorykh terminov. Klass, vzyatyy vor Anfangsgr?nde bei opredelenii neuer klassa, nazyvaetsya bazovym klassom. Klass, opredelyaemyy an osnove Basis klassa, nazyvaetsya proizvodnym klassom. Proizvodnyy klass avtomaticheski nasleduet all otkrytuyu funkcional'nost' Basis klassa, odnako ??? funkcional'nost' mozhet pereopredelyat'sya in proizvodnom klasse i dopolnyat'sya novymi vozmozhnostyami.

    Sleduyuschiy primer anschauungsweise pokazyvaet, kak ??? proiskhodit. Dopustim, bei uns imeetsya kompaniya s peredovoy politikoy in oblasti material'nogo stimulirovaniya. Kazhdyy Mal, kogda zarabotnaya Ausgleich vsekh sluzhaschikh kompanii povyshaetsya an 5%, f?r programmistov Augment sostavlyaet 6%. Euch porucheno razrabotat' Geb?ude ucheta kadrov f?r ???? kompanii. Vy reshaete opredelit' klass Programmer, proizvodnyy da Employee, i pereopredelit' Methode Raisesal agu in klasse Programmer, chtoby otrazit' avtomaticheskuyu (i vpolne zasluzhennuyu!) Aufgeld.

    Itak, pristupim k programmirovaniyu cepochki nasledovaniya Employee—>programmer. Dopustim, bei uns bereits imeetsya klass Publis Employee, kotoryy vkhodit in reshenie ili vklyuchaetsya in nego komandoy Project > References. In ???? sluchae Beginn Code klassa Programmer budet vyglyadet' derma?en (klyuchevaya stroka vydelena zhirnym Schrift):

    Public Class Programmer

    Inherits Employee

    End Class

    Klyuchevoe Wort Inherits dolzhno ist in pervoy nicht pustoy i nicht soderzhaschey kommentariya stroke posle imeni proizvodnogo klassa (kstati, Intellisense podskazhet imena vozmozhnykh bazovykh klassov). Uchtite, chto proizvodnyy klass nicht mozhet ob'yavlyat'sya s modifikatorom Publ und s, esli bazovyy klass ob'yavlyalsya s modifikatorom Friend ili Private. ??? svyazano der s Themen, chto modifikator urovnya dostupa in proizvodnom klasse nicht mozhet byt' menee ogranichivayuschim, chem modifikator Basis klassa. S drugoy storony, on mozhet ustanavlivat' bolee zhestkie ogranicheniya, poetomu da Basis klassa s urovnem dostupa Publ und s mozhno ob'yavit' proizvodnyy klass s urovnem Friend.

    Sleduyuschim Schritt in postroenii proizvodnogo klassa dolzhno Boden pravil'noe des opredelenie Konstrukteurs. Poskol'ku proizvodnyy klass dolzhen obladat' kak des minimum Themas aber vozmozhnostyami, chto i bazovyy, konstruktory proizvodnykh klassov h?ufig vyzyvayut konstruktory bazovykh klassov f?r pravil'noy inicializacii poley Basis klassa i peredayut im argumenty, kotorye dolzhny ispol'zovat'sya bei inicializacii. Bei ???? ispol'zuetsya special'noe klyuchevoe Wort Mybase:

    Public Sub New(Byval thename As String, Byval cursalary As Decimal)

    Mybase.NewCName.curSalary)

    End Sub

    Klyuchevaya stroka, vydelennaya zhirnym Schrift, vyzyvaet Konstrukteur das Basis klassa Empl oyee i inicializiruet des ego Ackers. Esli vy vergessen vyzvat' Mybase. New in Band sluchae, kogda Konstrukteur das Basis klassa vyzyvaetsya s Argumente, VB .NET vydaet soobschenie ob oshibke sleduyuschego vida:

    C:\vb net book \chapter 5 \Examplel \Examplel \Modulel.vb(55):

    'Examplel.Programmer'.the base class of 'Examplel.Employee'.

    does not have an accessible constructor that can be called with

    no arguments. Therefore.the first statement of this constructor

    must be und call to und constructor of the base class via 'Mybase.New'

    or another constructor of this class via 'Myclass.New' or 'Me.New'.

    Bek?mmlicher by, chtoby all soobscheniya ob oshibkakh byli nastol'ko soderzhatel'nymi i ponyatnymi. Kompilyator napominaet o Band, chto bei otsutstvii in Basis klassa des bezargumentnogo Konstrukteurs proizvodnyy klass dolzhen soderzhat' khotya by eins vyzov Mybase. New. Posle vklyucheniya in programmu vyzova Mybase. New voznikaet ochen' interesnyy vopros: kak obraschat'sya k ?cker das Basis klassa? Sleduyuschee pravilo an pervyy vzglyad mozhet ihr udivit':

    Proizvodnyy klass nicht obladaet privilegirovannym Eingang k ?cker Basis klassa.

    Iz ????? pravila sleduet, chto proizvodnyy klass Programmer nicht poluchaet dostupa k zakrytym ?cker das Basis klassa Employee. Predpolozhim, zarabotnaya Ausgleich khranitsya in zakrytom j?tet Basis klassa s imenem m_sal ary i vy pytaetes' einschlie?t in Code metoda Raisesalary klassa Programmer sleduyuschiy Ausschnitt:

    Public Sub New(Byval thename As String. Byval cursalary As Decimal)

    Mybase.New(thename. cursalary)

    Mybase.m_salary = 1.2 * cursalary End Sub

    Kompilyator vydaet soobschenie ob oshibke:

    'Examplel.Employee.m_Salary'is Private.and is not accessible

    in this context.

    In povsednevnoy zhizni suschestvuet khoroshaya analogiya — roditeli ustanavlivayut pravila povedeniya f?r detey, und nicht naoborot.

    Chto aber delat'? Esli vy khotite, chtoby proizvodnyy klass poluchil Eingang k nekotorym vozmozhnostyam Basis klassa, ob ???? dolzhen pozabotit'sya selbst bazovyy klass. In sleduyuschem razdele budet es ist aufgewiesen, kak ??? delaetsya.

     




    :: Наша кнопка ::

    Отримати код:

    Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


    :: Реклама ::

    Скачати безкоштовно програму Microsoft Front Page 2003


    :: Посилання ::

    -


     

     

     


    Copyright ©