Глава 20. Принципи на обектно-ориентираното програмиране

11 views
Skip to first unread message

checho

unread,
Apr 20, 2010, 12:08:30 PM4/20/10
to Intro C# Book
страница 16 от файла с темата:
Най-отдолу са опера¬циите (в UML) или методите (в .NET). Плюсът/
минусът в началото указват
при пренасянето на думата операциите има някакъв странен символ.

--
Subscription settings: http://groups.google.com/group/introcsharpbook/subscribe?hl=bg

checho

unread,
Apr 20, 2010, 2:49:28 PM4/20/10
to Intro C# Book
46
Други шаблони
Съществуват десетки други добре известни шаблони за дизайн, но няма да
се спираме подробно на тях. По-любознателните читатели могат да
потърсят за "Design Patterns" в Интернет и да разберат за какво !!!!!
случат!!!!! и
--> СЛУЖАТ

checho

unread,
Apr 20, 2010, 2:05:57 PM4/20/10
to Intro C# Book
24
Капсулация - примери
Ето един пример за скриване на методи, които не е !!!!нужда!!!! да са
известни на потребителя, а се ползват вътрешно само от автора на
класа. Първо дефинираме абстрактен клас Felidae, който дефинира
публичните опера-ции на котките (независимо какви точно котки имаме):
-->
Капсулация - примери
Ето един пример за скриване на методи, които не е НУЖНО да са известни
на потребителя, а се ползват вътрешно само от автора на класа. Първо
дефинираме абстрактен клас Felidae, който дефинира публичните опера-
ции на котките (независимо какви точно котки имаме):

checho

unread,
Apr 20, 2010, 2:48:19 PM4/20/10
to Intro C# Book
46
Други шаблони
Съществуват десетки други добре известни шаблони за дизайн, но няма да
се спираме подробно на тях. По-любознателните читатели могат да
потърсят за "Design Patterns" в Интернет и да разберат за какво !!!!
случат!!!! и
-->

Други шаблони
Съществуват десетки други добре известни шаблони за дизайн, но няма да
се спираме подробно на тях. По-любознателните читатели могат да
потърсят за "Design Patterns" в Интернет и да разберат за какво СЛУЖАТ
и

Виктория Парушева

unread,
Apr 24, 2010, 11:09:26 AM4/24/10
to Intro C# Book
Ще обясним за как йерархиите от класове подобряват четимостта на кода
и позволяват
преизползване на функционалност.
->
Ще обясним как йерархиите от класове подобряват четимостта на кода и
позволяват
преизползване на функционалност.
Излишна дума "за как"

Със base()
->
С base()

Със base.method(...)
->
С base.method(...)

Със base.field
->
С base.field

Появата на обектно-ориентираното програмиране de facto
->
Появата на обектно-ориентираното програмиране де факто
Не е необходимо да е на латиница


Специално за колекциите и работата с различни типове обекти има
разработена друга парадигма
наречена Generics. Тя позволява създаването на типизирани класове -
например колекция, която
работи само с обекти от тип Lion.
-> За Generics вече е говорено в глава 14. Иначе липсва и запетая пред
"наречена".

Ако не е се хвърля InvalidCastException.
->
Ако не е, се хвърля InvalidCastException.
Пунктуация

Ето един пример, в който извикваме ToString() метода
->
Ето един пример, в който извикваме метода ToString()
Словоред

първо се преобразува до символен низ чрез ToString() метода му
->
първо се преобразува до символен низ чрез метода му ToString()
Словоред

Тоест когато използваме ключовата дума new създаваме нов метод, който
скрива стария и можем
да (????) извикаме само чрез upcast.
->
Тоест когато използваме ключовата дума new, създаваме нов метод, който
скрива стария, и
можем да го извикаме само чрез upcast.
Пунктуация. И можем да извикаме само чрез upcast кое?

Какво става ако в горния пример върнем думата override?
->
Какво става, ако в горния пример върнем думата override?
Пунктуация

Метод, който може да бъде пренаписан се нарича виртуален метод.
->
Метод, който може да бъде пренаписан, се нарича виртуален метод.
Пунктуация

Ако желаем един метод да може да бъде пренаписан можем да укажем това
с ключовата дума

virtual в декларацията на метода.
->
Ако желаем един метод да може да бъде пренаписан, можем да укажем това
с ключовата дума

virtual в декларацията на метода.
Пунктуация

Транзитивност, пример.
africanLion.setMale(true);
->
africanLion.SetMale(true);
PascalCase

за по ясно разбиране на примерите.
->
за по-ясно разбиране на примерите.
Правопис

Нужно ни е само дистанционното, и с малък брой
->
Нужно ни е само дистанционното и с малък брой
Пунктуация

игнорираме всички детайли, които не ни интересуват от даден обект и
->
игнорираме всички детайли, които не ни интересуват от даден обект, и
Пунктуация

Имайки абстрактния тип данни ние можем да работим с него
->
Имайки абстрактния тип данни, ние можем да работим с него
Пунктуация

Това, допълнено от факта,
->
Като прибавим това към факта,
Словоред

Ето как изглежда и класа Lion
->
Ето как изглежда и класът Lion
Членуване

и се специфицира шаблонния клас.
->
и се специфицира шаблонният клас.
Членуване

Написаният код срещу интерфейси е много по-издръжлив срещу промени,
отколкото написаният

срещу конкретни класове.
...
Разбира се, добра практика е да се програмира срещу интерфейси, а не
срещу конкретни класове

(за това вече споменахме в секцията "Абстракция").
-> Написан код срещу интерфейс/класове - това ми звучи адски странно.

Когато програмираме трябва да дефинираме като private (скрит) всеки
метод или поле, които не

искаме да се ползват от друг клас.
->
Когато програмираме, трябва да дефинираме като private (скрит) всеки
метод или поле, които

не искаме да се ползват от друг клас.
Пунктуация

Забележете в горния пример как нормалните методи hide() и run() имат
тяло, а абстрактният

метод CatchPray() няма тяло.
->
Забележете в горния пример как нормалните методи Hide() и Run() имат
тяло, а абстрактният

метод CatchPray() няма тяло.
PascalCase

за абстрактния метод getTypicalSound():
->
за абстрактния метод GetTypicalSound():
PascalCase

Пренаписването на методи се нарича още: припокриване (подмяна) на
виртуален метод.
->
Пренаписването на методи се нарича още: препокриване (подмяна) на
виртуален метод.
Правопис

така и абстрактните методи могат да бъдат припокривани
->
така и абстрактните методи могат да бъдат препокривани
Правопис

Клас, който прави много неща едновременно е труден за разбиране и
поддръжка.
->
Клас, който прави много неща едновременно, е труден за разбиране и
поддръжка.
Пунктуация

Помислете какво се случва, ако друг метод, който извиква sqrt() подава
параметрите си през

същите статични променливи operand и result.
->
Помислете какво се случва, ако друг метод, който извиква Sqrt(),
подава параметрите си през

същите статични променливи operand и result.
Пунктуация + PascalCase

Класовете, реализиращи колекциите са необвързани един с друг.
->
Класовете, реализиращи колекциите, са необвързани един с друг.
Пунктуация

да имат ясен интерфейс и да добра абстракция и да скриват детайлите за
вътрешната си работа.
->
да имат ясен интерфейс и добра абстракция и да скриват детайлите за
вътрешната си работа.
Излишно "да"

Ето един друг пример: Представете си какво щеше да стане,
->
Ето един друг пример: представете си какво щеше да стане,
След двоеточие се пише малка буква

и дали е мъж или жена
->
и дали е мъж, или жена
Пунктуация

какви книги харесва или каква бира харесва.
->
какви книги харесва или каква бира пие.
Има повторение на думата "харесва", което не звучи добре.

В примера в "идентификация на класовете" "дневен отчет за всички
транзакции" думата "отчет"

не е маркирана в сиво.

за класа Student цвета на очите е несъществена характеристика
->
за класа Student цветът на очите е несъществена характеристика
Членуване

Ето как изглежда една sequence диаграма:
->
Ето как изглежда една use case диаграма:
Терминология

Това е полезно ако процесът по създаването е много сложен
->
Това е полезно, ако процесът по създаването е много сложен
Пунктуация

Нека имаме клас, която съдържа графични файлове
->
Нека имаме клас, който съдържа графични файлове
Съгласуване

mihail stoynov

unread,
May 13, 2010, 8:57:59 AM5/13/10
to introcs...@googlegroups.com
Здравейте,
Благодаря за усърдието.
Всички намерени грешки са оправени.

I)
Въпрос за пунктуацията към Виктория:


> Тоест когато използваме ключовата дума new, създаваме нов метод,
> който скрива стария, и можем да го извикаме само чрез upcast.
> Пунктуация. И можем да извикаме само чрез upcast кое?

Трябва ли да има запетая пред съюза "и" и ако да - защо? Правилото за
запетаята за край на подчиненото изречение е по-силeн от правилото за
липса пред съюза "и"?

II)


> игнорираме всички детайли, които не ни интересуват от даден обект, и

Тук трябва да е същото правило?


III)


> Нужно ни е само дистанционното, и с малък брой
> ->
> Нужно ни е само дистанционното и с малък брой
> Пунктуация

А тук няма, защото не е подчинено второто изречение?

Mихаил

2010/4/24 Виктория Парушева <v_par...@hotmail.com>:

Виктория Парушева

unread,
May 15, 2010, 10:03:28 AM5/15/10
to Intro C# Book
Здравей.
На I и II отговарям с "да".
На III не мога да кажа точно правилото, което се следва, Все пак не
виждам нужда от запетая преди "и" там.

mihail stoynov

unread,
Dec 18, 2010, 5:28:29 AM12/18/10
to introcs...@googlegroups.com
Странният знак е т.нар. "меко тире", което указва как думата може да се пренася с тире на нов ред. В Word се вижда правилно. Ти с какво четеш?

2010/4/20 checho <stefan...@gmail.com>

mihail stoynov

unread,
Dec 18, 2010, 5:29:44 AM12/18/10
to introcs...@googlegroups.com
all fixed

2010/12/18 mihail stoynov <mih...@stoynov.com>
Reply all
Reply to author
Forward
0 new messages