Обектно-ориентирано програмиране

Обектно-ориентирано програмиране

История и принципи на обектно-ориентираното програмиране. Гост-лектор: Сава Чанков

Transcript

  1. Обектно-ориентирано програмиране История и принципи

  2. • Кратка история на обектно-ориентиентирания подход в програмирането • За

    произхода на Ruby • Обектно-ориентираният дизайн – красива теория,
 не толкова красива практика Днес
  3. Откъде започва всичко?

  4. Оле-Йохан Дал Кристен Нигаард Simula

  5. Simula Begin Class Glyph; Virtual: Procedure print Is Procedure print;

    Begin End; Glyph Class Char (c); Character c; Begin Procedure print; OutChar(c); End; Glyph Class Line (elements); Ref (Glyph) Array elements; Begin Procedure print; Begin Integer i; For i:= 1 Step 1 Until UpperBound (elements, 1) Do elements (i).print; OutImage; End; End; Ref (Glyph) rg; Ref (Glyph) Array rgs (1 : 4); ! Main program; rgs (1):- New Char ('A'); rgs (2):- New Char ('b'); rgs (3):- New Char ('b'); rgs (4):- New Char ('a'); rg:- New Line (rgs); rg.print; End;
  6. Алън Кeй Smalltalk

  7. Smalltalk |myArray myOperation| myArray := #('A' 'b' 'b' 'a'). myOperation

    := [:each | Transcript show: each. Transcript cr. ]. myArray do: myOperation.
  8. • Всичко е обект • Обектите комуникират по между си

    изпращайки си съобщения • Обектите комуникират използвайки само дефинирани външни интерфейси – не знаят нищо за вътрешното устройство на колегите си Основни принципи
  9. • Всичко е обект Основни принципи

  10. • Обектите комуникират по между си изпращайки си съобщения Основни

    принципи
  11. • Обектите комуникират използвайки само дефинирани външни интерфейси – не

    знаят нищо за вътрешното устройство на колегите си Основни принципи
  12. None
  13. Perl Лари Уол

  14. Perl #!/usr/bin/perl -T use 5.010; use CGI; use strict; use

    warnings; my $q = CGI->new(); say $q->header(), $q->start_html(); say "<h1>Parameters</h1>"; for my $param ($q->param()) { my $safe_param = $q->escapeHTML($param); say "<p><strong>$safe_param</strong>: "; for my $value ($q->param($param)) { say $q->escapeHTML($value); } say '</p>'; } say $q->end_html();
  15. Ruby Юкихиро Мацумото

  16. Обектно-ориентиран дизайн: теория

  17. Обектно-ориентиран дизайн: теория SOLID

  18. Обектно-ориентиран дизайн: теория S O L I D ingle responsibility

    pen for extension / closed for modification iskov substitution nterface segregation ependency inversion
  19. Обектно-ориентиран дизайн: практика

  20. None
  21. None
  22. None
  23. Кристен Нигаард, един от създателите на Simula „Да програмираш означава

    да проумяваш“