Ïîìîãíè íè äà íàïðàâèì Uroci.net ïî - áîãàò! Äîáàâè óðîê
Êàòåãîðèè Äðóãè óðîöè Adobe Photoshop Adobe Illustrator Adobe Flash Adobe Fireworks DreamWeaver CSS è HTML Corel Draw Image Ready PHP SEO CMS Microsoft Windows Microsoft Word Microsoft Excel PowerPoint Microsoft Access Microsoft Publisher Linux Visual basic
JavaScript Ajax 3ds Max Maya 3D C++ Sound Forge Gimp SWiSH

Ïðèíöèïè íà îáåêòíî îðèåíòèðàíîòî ïðîãðàìèðàíå

bubust   òðóäíîñò:    âèäÿí: 2302



Èíòåðôåéñè

Èíòåðôåéñèòå âúâ VB.NET ñà êàòî èíòåðôåéñèòå â ïðåäèøíèòå âåðñèè íà VB: Äåôèíèöèè íà êëàñà áàç àêòóàëíî èçïúëíåíèå. Çàùîòî íÿìà èçïúëíèì êîä, íå ìîæå äà ñå èíñòàíöèðà èíòåðôåéñà, íàìåñòî òîâà òðÿáâà äà ñå èçïúëíè â êëàñà.

Èìà åäíî èçêëþ÷åíèå çà ïðàâèëîòî "íå èçïúëíèì êîä â èíòåðôåéñà": Âúâ VB.NET, ìîæå äà äåôèíèðàòå òàêà íàðå÷åíèòå ñòàòè÷íè ÷ëåíîâå (static members).

Êàòî ïðîãðàìèñòè ïîä VB, òðÿáâà äà îñúùåñòâèì êàïñóëàöèÿòà ÷ðåç ñîôòóåðíè êîìïîíåíòè.

Âúâ VB .NET, ìåòîäèòå íà èíòåðôåéñà ñå ðåàëèçèðàò êàòî ôóíêöèè (functions). Îò äðóãà ñòðàíà, ñâîéñòâàòà ñå ðåàëèçèðàò êàòî ïðîìåíëèâè - private êîèòî ñúõðàíÿâàò ñòîéíîñòòà íà ñâîéñòâîòî çàåäíî ñ äâîéêà ôóíêöèè - public functions--åäíà çà ïîäàâàíå (óñòàíîâÿâàíå) íà ïðîìåíëèâàòà è åäíà çà âðúùàíåòî é (ïîëó÷àâàíåòî). Òåçè ôóíêöèè ñå íàðè÷àò ïîíÿêîãà ìåòîäè çà äîñòúï (accessor methods) íà ñâîéñòâîòî. Ìíîæåñòâîòî îò èçëîæåíè (exposed) ôóíêöèè (îáèêíîâåíè ìåòîäè è ìåòîäè çà äîñòúï) êîíñòèòóèðàò èíòåðôåéñà -interface íà àáñòðàêöèÿòà.

Ãåíåðàëíî åäèí ñîôòóåðåí êîìïîíåíò ìîæå äà êàïñóëèðà è èçëîæè ïîâå÷å îò åäíà àáñòðàêöèÿ--îòòóê è ïîâå÷å îò åäèí èíòåðôåéñ. Ïðèìåðíî áèõìå èñêàëè ñîôòóåðåí êîìïîíåíò â ïðîåêòà íè çà ñëóæèòåë íà êîìïàíèÿ, êîéòî äà êàïñóëèðà èíòåðôåéñ, íàðå÷åí IIdentification (ïúðâàòà áóêâà "I" å çà èíòåðôåéñ) , êîéòî äà íè ñëóæè çà öåëèòå íà èäåíòèôèêàöèÿòà. Òîçè èíòåðôåéñ ìîæå äà èìà ñâîéñòâà êàòî Name (èìå), Social Nomer (íîìåð ñîöèàëíà îñèãóðîâêà), DriveNomer (íîìåð íà øîôüîðñêà êíèæêà), Vuzrast(âúçðàñò), Birthmarks (áåëåã ïî ðîæäåíèå), è òàêà íàòàòúê. Íåùî ïîâå÷å, ñîôòóåðíèÿò êîìïîíåíò ìîæå äà êàïñóëèðà èíòåðôåéñ íàðå÷åí IEducation çà îïèñâàíå îáðàçîâàíèåòî íà ñëóæèòåëÿ. Òîçè èíòåðôåéñ ìîæå äà âêëþ÷âà ñâîéñòâà êàòî Education Level (íèâî îáðàçîâàíèå), Diplomi(äèïëîìè) è òàêà íàòàòúê.

Èíòåðôåéñúò íà âñÿêà àáñòðàêöèÿ èçëîæåí (ïðåäñòàâåí) âúâ ñîôòóåðíèÿ êîìïîíåíò ñå íàðè÷à èíòåðôåéñ íà ñîôòóåðíèÿ êîìïîíåíò (software component). Êîìïîíåíòúò Ñëóæèòåë (Slujasht) âêëþ÷âà âå÷å äâà èíòåðôåéñà:

IIdentification è IEducation.

Òðÿáâà äà îòáåëåæèì, ÷å ïîíÿòèåòî èíòåðôåéñ ÷åñòî ñå ñâúðçâà ñ ìíîæåñòâîòî îò âñè÷êè èçëîæåíè ñâîéñòâà è ìåòîäè îò ñîôòóåðíèÿ êîìïîíåíò, êàòî â òîçè ñëó÷àé êîìïîíåíòà èìà ñàìî åäèí èíòåðôåéñ.

Âðúùàéêè ñå êúì îðèãèíàëíàòà àáñòðàêöèÿ "Ñëóæèòåë" (Slujasht), íåéíèÿò èíòåðôåéñ ìîæå äà ñå ñúñòîè îò ôóíêöèèòå ïîêàçàíè â Òàáëèöà 1.

Òàáëèöà 1.


×ëåíîâå (Members)íà èíòåðôåéñà íà Slujasht
Type Name
Property FullName: GetFullName(), SetFullName( )
Property Address: GetAddress(), SetAddress( )
Property SlujashtID: GetSlujashtID(), SetSlujashtID( )
Property Zaplata: GetZaplata(), SetZaplata( )
Method IncZaplata( )
Method DecZaplata ( )

Ñàìî ðàçëèñòâàíå íà ôóíêöèèòå íà èíòåðôåéñà ïî èìå - name (êàêòî íàïðàâèõìå) íå äàâà äîñòàòú÷íî èíôîðìàöèÿ çà èçâèêâàíåòî íà òåçè ôóíêöèè. Òàêà ÷å ìíîãî ïî-ïîëåçíà äåôèíèöèÿ íà èíòåðôåéñ áè áèëà ñëåäíàòà: ìíîæåñòâî îò ñèãíàòóðè íà ïóáëè÷íè ôóíêöèè çà ñîôòóåðíè êîìïîíåíòè. Çà äà ðàçÿñíèì êàêâî èìàìå ïðåäâèä, íåêà äà äèñêóòèðàìå åäíà îò íàé-èíòåðåñíèòå ÷åðòè íà îáåêòíî-îðèåíòèðàíîòî ïðîãðàìèðàíå-- ðàçëèêàòà ìåæäó äåêëàðàöèÿ (declaration) íà ôóíêöèÿ è èçïúëíåíèåòî (implementation) íà òàçè ôóíêöèÿ. Ðàçãëåäàéòå ïðèìåðà íà ôóíêöèÿ çà ñîðòèðàíå:

Function Sort(a( ) as Integer, iSize as Integer) as Boolean

For i = 1 to iSize

For j = i+1 to iSize

If a(j) < a(i) Then swap a(i), a(j)

Next j

Next I

Sort = True

End Function

Ïúðâèÿò ðåä â íàøàòà äåôèíèöèÿ:

Function Sort(a( ) as Integer, iSize as Integer) as Boolean

å äåêëàðàöèÿòà íà ôóíêöèÿòà (function declaration). Òÿ îáåçïå÷àâà èíôîðìàöèÿ çà áðîÿ è òèïà íà ïàðàìåòðèòå è òèïà íà âúðíàòàòà ñòîéíîñò îò ôóíêöèÿòà. Òÿëîòî íà ôóíêöèÿòà:

For i = 1 to iSize

For j = i+1 to iSize

If a(j) < a(i) Then swap a(i), a(j)

Next j

Next i

Sort = True

ïðåäñòàâëÿâà èçïúëíåíèåòî (implementation) íà ôóíêöèÿòà. Òî îïèñâà êàê ôóíêöèÿòà èçïúëíÿâà öåëòà ñè. Çàáåëåæåòå ìîæåì çà ïðîìåíÿìå òÿëîòî íà ôóíêöèÿòà áåç äà ïðîìåíÿìå äåêëàðàöèÿòà é. Ïîíåæå öåëòà å äà ñå ñîðòèðà ìàñèâ a ìîæåì äà çàìåñòèì ïðåäëîæåíèÿ ïðîñòè÷úê àëãîðèòúì ñ ìåòîäà íà ìåõóð÷åòî, äâîè÷íîòî ñîðòèðàíå è ò.í. Ñåãà äà ñå ïîñòàâèì íà ìÿñòîòî íà êëèåíò íà ôóíêöèÿ Sort. Êëèåíòúò ñàìî èñêà äà çíàå êàê äà èçïîëçâà ôóíêöèÿòà, èëè êàê äà ñå îáúðíå êúì äåêëàðàöèÿòà íà ôóíêöèÿòà. Íå ãî èíòåðåñóâà íèùî çà èçïúëíåíèåòî. Ñëåäîâàòåëíî ñàìî äåêëàðàöèÿòà å èíòåðôåéñ íà ôóíêöèÿòà.

Ñèãíàòóðàòà (signature) íà ôóíêöèÿòà å èìåòî è òèïà âúðíàòà ñòîéíîñò, êàêòî è èìåíàòà, ðåäà è òèïà íà íåéíèòå ïàðàìåòðè. Äåêëàðàöèÿòà íà ôóíêöèÿòà å ïðîñò è ÿñåí íà÷èí çà îïèñàíèå íà ñèãíàòóðàòà íà ôóíêöèÿòà. Microsoft ðàçáèðà ïîä ñèãíàòóðà ñàìî àðãóìåíòèòå (argument signature) è íÿìà ïðåäâèä òèïà âúðíàòà ñòîéíîñò äà å ÷àñò îò ñèãíàòóðàòà íà ôóíêöèÿòà. Ïîä ñèãíàòóðà òå ðàçáèðàò ãåíåðàëíîòî ïîíÿòèå çà ôóíêöèÿòà. Íî ïî-ñïåöèôè÷íà äåôèíèöèÿ çà íàñ å ÷å èíòåðôåéñúò íà íàøèÿò êîìïîíåíò Ñëóæèòåë ìîæå äà å ñëåäíèÿò:

Function GetFullName(lEmpID As Long) As String

Sub SetFullName(lEmpID As Long, sName As String)

. . .

Sub IncZaplata(sngPercent As Single)

Sub DecZaplata(sngPercent As Single)


Ñòðàíèöè: «1 2

Ðåãèñòðèðàéòå ñå, çà äà äîáàâèòå êîìåíòàð


© Âñè÷êè ïðàâà çàïàçåíè. 2006-2008. Created by: Site.bg
Ïðåïîðú÷âàìå: IT Íîâèíè | Êèíî è èãðè | Äèïëîìà.áã | Paparak.bg | Òóíèíã Ïîðòàë | uchenik.com | TRAVEL òóðèçúì | Ðåôåðàòè | AmAm.bg | Èäå.ëè | Êóðñîâè ðàáîòè | AnimeS-bg.com | Ôîòî Ôîðóì | Çàïîçíàíñòâà | Ìðåæà îò ïðèÿòåëè | IT Light | Spodeli.net | Ôîòî-Êóëò | IDG.BG | Teenproblem.net | Áëîã - Îáðàçîâàíèå | Fresh-BG.com | Hanovete.com | Bulfleet.com | Mythlands.com | Ohoboho.com | Êàçàíëúê.Com | News24 | Setcom.bg | Atol.bg | Elmaz.com | MobileBulgaria.com