Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

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

More Decks by Programming Ruby @ fmi.uni-sofia.bg

Other Decks in Programming

Transcript

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

    произхода на Ruby • Обектно-ориентираният дизайн – красива теория,
 не толкова красива практика Днес
  2. 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;
  3. Smalltalk |myArray myOperation| myArray := #('A' 'b' 'b' 'a'). myOperation

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

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

    знаят нищо за вътрешното устройство на колегите си Основни принципи
  6. 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();
  7. Обектно-ориентиран дизайн: теория S O L I D ingle responsibility

    pen for extension / closed for modification iskov substitution nterface segregation ependency inversion