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. Обектно-ориентирано
    програмиране
    История и принципи

    View Slide

  2. • Кратка история на обектно-ориентиентирания
    подход в програмирането
    • За произхода на Ruby
    • Обектно-ориентираният дизайн – красива теория,

    не толкова красива практика
    Днес

    View Slide

  3. Откъде започва всичко?

    View Slide

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

    View Slide

  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;

    View Slide

  6. Алън Кeй
    Smalltalk

    View Slide

  7. Smalltalk
    |myArray myOperation|
    myArray := #('A' 'b' 'b' 'a').
    myOperation := [:each |
    Transcript show: each.
    Transcript cr.
    ].
    myArray do: myOperation.

    View Slide

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

    View Slide

  9. • Всичко е обект
    Основни принципи

    View Slide

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

    View Slide

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

    View Slide

  12. View Slide

  13. Perl
    Лари Уол

    View Slide

  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 "Parameters";
    for my $param ($q->param()) {
    my $safe_param = $q->escapeHTML($param);
    say "$safe_param: ";
    for my $value ($q->param($param)) {
    say $q->escapeHTML($value);
    }
    say '';
    }
    say $q->end_html();

    View Slide

  15. Ruby
    Юкихиро
    Мацумото

    View Slide

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

    View Slide

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

    View Slide

  18. Обектно-ориентиран
    дизайн: теория
    S
    O
    L
    I
    D
    ingle responsibility
    pen for extension / closed for modification
    iskov substitution
    nterface segregation
    ependency inversion

    View Slide

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

    View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. Кристен Нигаард,
    един от създателите на Simula
    „Да програмираш означава да проумяваш“

    View Slide