Programowanie obiektowe

Podobne dokumenty
Programowanie w Ruby

Programowanie w Ruby

Programowanie w Ruby

Programowanie w Ruby

Wstęp do ruby dla programistów javy

Programowanie obiektowe

Wprowadzenie do języka Ruby

Programowanie w Ruby

Programowanie w Ruby

Programowanie w Ruby

Metaprogramowanie w Ruby

Programowanie Obiektowe i C++

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie w Ruby

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie obiektowe

Materiały do laboratorium MS ACCESS BASIC

Programowanie obiektowe

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Magia Ruby : programowanie na wesoło / Eric Weinstein. Warszawa, Spis treści

Kurs rozszerzony języka Python

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Podstawy programowania skrót z wykładów:

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Kurs WWW. Paweł Rajba.

Platformy Programistyczne Podstawy języka Java

Podstawowe części projektu w Javie

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Języki skryptowe w programie Plans

KOTLIN. Język programowania dla Androida

Redis, skrypty w języku Lua

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

ZMIENNE. Podstawy PHP

Podstawy Programowania Obiektowego

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Bloki anonimowe w PL/SQL

Wykład nr 1 Język Ruby i framework Rails

EPI: Interfejs Graficzny 2011/2012 Laboratorium nr 2 Programowanie obiektowe

Diagramy klas. dr Jarosław Skaruz

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

LibreOffice Calc VBA

Umieszczanie kodu. kod skryptu

MATERIAŁY DO ZAJĘĆ II

Właściwości i metody obiektu Comment Właściwości

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Podstawy programowania C. dr. Krystyna Łapin

Podstawy programowania w języku C

Python. Wprowadzenie. Jolanta Bachan

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Podstawy Programowania C++

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Programowanie Obiektowe i C++

Podstawy Programowania Podstawowa składnia języka C++

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Technologia informacyjna programowanie Janusz Uriasz

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie. Projektowanie funkcje programu tworzenie algorytmu i struktur danych. Programowanie implementacja algorytmu kompilacja programu

Programowanie w Ruby

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Programowanie w Ruby

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie obiektowe

Podstawy programowania w języku C i C++

Programowanie Obiektowe i C++

Programowanie w Ruby

Java Język programowania

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Wprowadzenie do języka Java

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Język C++ Różnice między C a C++

Wstęp do programowania 2

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Programowanie i projektowanie obiektowe

Microsoft IT Academy kurs programowania

Kurs rozszerzony języka Python

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

PARADYGMATY PROGRAMOWANIA Wykład 4

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Wykład 2 Składnia języka C# (cz. 1)

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Programowanie obiektowe

Algorytmika i Programowanie VBA 1 - podstawy

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Wstęp do programowania

Programowanie Obiektowe i C++

Funkcje i instrukcje języka JavaScript

Transkrypt:

Programowanie obiektowe Język programowania Ruby Marcin Młotkowski 12 kwietnia 2018

Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych 3 4 Przypisania Instrukcje warunkowa Pętle 5 Deklaracja klasy Marcin Młotkowski Programowanie obiektowe 312 / 391

Dlaczego Ruby Wstęp Ortodoksyjny język obiektowy ("wszystko jest obiektem"). Marcin Młotkowski Programowanie obiektowe 313 / 391

Ruby Wstęp Główne cechy języka Język skrajnie obiektowy; dynamiczny system typów (skryptowy); mechanizm domieszkowania klas (mix ins); cechy języków funkcjonalnych; kontynuacje; i sporo innych... Marcin Młotkowski Programowanie obiektowe 314 / 391

Autorstwo Wstęp Yukihiro Matsumoto (Matz) Marcin Młotkowski Programowanie obiektowe 315 / 391

Uruchamianie programów Tryb interaktywny $ ruby puts "A kuku!" ˆD $ irb # albo jirb irb(main):001:0> Marcin Młotkowski Programowanie obiektowe 316 / 391

Uruchamianie programów Tryb interaktywny $ ruby puts "A kuku!" ˆD $ irb # albo jirb irb(main):001:0> Wykonywanie programów $ ruby plik.rb Marcin Młotkowski Programowanie obiektowe 316 / 391

Dokumentacja Wstęp $ ri Fixnum Marcin Młotkowski Programowanie obiektowe 317 / 391

Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych 3 4 Przypisania Instrukcje warunkowa Pętle 5 Deklaracja klasy Marcin Młotkowski Programowanie obiektowe 318 / 391

Klasa Fixnum, Bignum, Float Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych liczby są prawdziwymi obiektami; dostępne są standardowe operatory arytmetyczne Marcin Młotkowski Programowanie obiektowe 319 / 391

Literały Wstęp Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych literały proste Ala ma kota literały bardziej skomplikowane "Ala ma #{2+2} koty" i jeszcze inne Marcin Młotkowski Programowanie obiektowe 320 / 391

Operowanie napisami Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych + mnóstwo innych Marcin Młotkowski Programowanie obiektowe 321 / 391

Przedziały Wstęp Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych Literały: 1..10 1, 2,..., 10 a... d a, b, c Marcin Młotkowski Programowanie obiektowe 322 / 391

Zastosowanie przedziałów Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych Test zawierania: (1..10) === 5 true ( a.. j ) === z false Marcin Młotkowski Programowanie obiektowe 323 / 391

Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych Deklarowanie i odwołania do tablic zwierzątka = [ kotek, 1024, piesek, 3.1415 ] zwierzątka[2] piesek Marcin Młotkowski Programowanie obiektowe 324 / 391

Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych Deklarowanie tablic asocjacyjnych słownik = { jeden => one, dwa => two, trzy => three } słownik[ dwa ] two Marcin Młotkowski Programowanie obiektowe 325 / 391

Konwencje w Ruby Wstęp Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych $zmienna @zmienna @@zmienna Zmienna zmienna zmienna globalna zmienna obiektu zmienna klasy (statyczna) stała, nazwa klasy lub modułu zmienna lokalna, parametry i nazwy metod Marcin Młotkowski Programowanie obiektowe 326 / 391

Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych 3 4 Przypisania Instrukcje warunkowa Pętle 5 Deklaracja klasy Marcin Młotkowski Programowanie obiektowe 327 / 391

Definicja prawdy Wstęp Prawdziwa jest każda wartość, która nie jest nil ani false. Marcin Młotkowski Programowanie obiektowe 328 / 391

Spójniki logiczne Wstęp and, &&, or,, not,! Marcin Młotkowski Programowanie obiektowe 329 / 391

Wartość wyrażenia logicznego Wartością wyrażenia logicznego jest wartość tego argumentu, który determinuje prawdę lub fałsz. Marcin Młotkowski Programowanie obiektowe 330 / 391

Wartość wyrażenia logicznego Wartością wyrażenia logicznego jest wartość tego argumentu, który determinuje prawdę lub fałsz. nil and true false and true nil false 1024 and false false 1024 and nil nil 1024 and "napis" "napis" Marcin Młotkowski Programowanie obiektowe 330 / 391

Zastosowanie Wstęp lista[klucz] = [ ] jest równoważne lista[klucz] = lista[klucz] [ ] Marcin Młotkowski Programowanie obiektowe 331 / 391

Operatory logiczne Wstęp == sprawdzenie równości <, <=, >=, > standardowe operatory arytmetyczne Marcin Młotkowski Programowanie obiektowe 332 / 391

Operator defined? Wstęp defined? 1 defined? niezdefinowana defined? printf "expression" nil "method" Marcin Młotkowski Programowanie obiektowe 333 / 391

Przypisania Instrukcje warunkowa Pętle Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych 3 4 Przypisania Instrukcje warunkowa Pętle 5 Deklaracja klasy Marcin Młotkowski Programowanie obiektowe 334 / 391

Przypisania Instrukcje warunkowa Pętle Instrukcje, a właściwie wyrażenia Większość instrukcji można traktować jak wyrażenia. Marcin Młotkowski Programowanie obiektowe 335 / 391

Przypisania Instrukcje warunkowa Pętle Instrukcja (wyrażenie) przypisania x = 2 + 2 Marcin Młotkowski Programowanie obiektowe 336 / 391

Przypisania Instrukcje warunkowa Pętle Instrukcja (wyrażenie) przypisania x = 2 + 2 a = b = c = 2 * 2 Marcin Młotkowski Programowanie obiektowe 336 / 391

Przypisania Instrukcje warunkowa Pętle Instrukcja (wyrażenie) przypisania x = 2 + 2 a = b = c = 2 * 2 a, b = b, a Marcin Młotkowski Programowanie obiektowe 336 / 391

Schemat instrukcji złożonej Przypisania Instrukcje warunkowa Pętle Instrukcja... Marcin Młotkowski Programowanie obiektowe 337 / 391

Instrukcja if, 1. postać Przypisania Instrukcje warunkowa Pętle if warunek instrukcja Marcin Młotkowski Programowanie obiektowe 338 / 391

Instrukcja if, 2. postać Przypisania Instrukcje warunkowa Pętle if warunek instrukcja else instrukcja Marcin Młotkowski Programowanie obiektowe 339 / 391

Instrukcja if, 2. postać Przypisania Instrukcje warunkowa Pętle if warunek instrukcja else instrukcja if warunek then instrukcja else instrukcja Marcin Młotkowski Programowanie obiektowe 339 / 391

Instrukcja if, 2. postać Przypisania Instrukcje warunkowa Pętle if warunek instrukcja else instrukcja if warunek then instrukcja else instrukcja if warunek: instrukcja else instrukcja Marcin Młotkowski Programowanie obiektowe 339 / 391

Instrukcja if, 3. postać Przypisania Instrukcje warunkowa Pętle if warunek instrukcja elsif warunek instrukcja else instrukcja Marcin Młotkowski Programowanie obiektowe 340 / 391

Instrukcja if w roli wyrażenia Przypisania Instrukcje warunkowa Pętle abs = if x < 0 -x else x Marcin Młotkowski Programowanie obiektowe 341 / 391

Skrócona postać instrukcji if Przypisania Instrukcje warunkowa Pętle print suma if suma > 0 print suma unless suma == 0 Marcin Młotkowski Programowanie obiektowe 342 / 391

Instrukcja case, 1. postać Przypisania Instrukcje warunkowa Pętle przestepny = case when rok % 400 == 0: true when rok % 100 == 0: false else rok % 4 == 0 Marcin Młotkowski Programowanie obiektowe 343 / 391

Instrukcja case, 2. postać Przypisania Instrukcje warunkowa Pętle case polecenie when "exit", "quit" exit when "run" init() start() else print "Nieznane polecenie #{polecenie}" Marcin Młotkowski Programowanie obiektowe 344 / 391

Pętle Wstęp Przypisania Instrukcje warunkowa Pętle while warunek... unless warunek... Marcin Młotkowski Programowanie obiektowe 345 / 391

Przypisania Instrukcje warunkowa Pętle Pętle while warunek... unless warunek... Postać skrócona a *= 2 while a < 100 delta = delta - 10 unless delta < 0 Marcin Młotkowski Programowanie obiektowe 345 / 391

Powtarzanie Wstęp Przypisania Instrukcje warunkowa Pętle 3.times do print "Hop!\n" Marcin Młotkowski Programowanie obiektowe 346 / 391

Przypisania Instrukcje warunkowa Pętle 3.times do x print "Hop!\n" 0.upto(9) do x print " ", x Marcin Młotkowski Programowanie obiektowe 347 / 391

Iteracja po kolekcjach Przypisania Instrukcje warunkowa Pętle [ 2, 3, 5, 7, 11].each { val print val, " "} Marcin Młotkowski Programowanie obiektowe 348 / 391

Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas Plan wykładu 1 Wstęp 2 Typy numeryczne Łańcuchy znaków (klasa String) Przedziały Tablice i tablice asocjacyjne Nazwy zmiennych 3 4 Przypisania Instrukcje warunkowa Pętle 5 Deklaracja klasy Marcin Młotkowski Programowanie obiektowe 349 / 391

Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas Wszystkie klasy dziedziczą po klasie Object. Marcin Młotkowski Programowanie obiektowe 350 / 391

Klasa reprezentująca książkę Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas class Ksiazka def initialize(tytul, autor, wydawca) @tytul = tytul @autor = autor @wydawca = wydawca Marcin Młotkowski Programowanie obiektowe 351 / 391

Tworzenie obiektu Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas obiekt = Ksiazka.new( Pan Tadeusz, Mickiewicz, Toruń ) print obiekt.to_s #<Ksiazka:0x3f4b21> Marcin Młotkowski Programowanie obiektowe 352 / 391

Implementacja metod Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas class Ksiazka def initialize(tytul, autor, wydawca) @tytul = tytul @autor = autor @wydawca = wydawca def tytul @tytul Marcin Młotkowski Programowanie obiektowe 353 / 391

Implementacja metod Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas class Ksiazka def initialize(tytul, autor, wydawca) @tytul = tytul @autor = autor @wydawca = wydawca def tytul @tytul Odwołanie do metody k = Ksiazka.new( Pan Tadeusz, Mickiewicz, Toruń ) k.tytul() k.tytul Marcin Młotkowski Programowanie obiektowe 353 / 391

Metody "specjane" Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas class Temperatura def initialize(temp) @celsjusz = temp Marcin Młotkowski Programowanie obiektowe 354 / 391

Metody "specjane" Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas class Temperatura def initialize(temp) @celsjusz = temp def fahrenheit 32.0 + (9.0/5.0)*@celsjusz Marcin Młotkowski Programowanie obiektowe 354 / 391

Metody "specjane" Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas class Temperatura def initialize(temp) @celsjusz = temp def fahrenheit 32.0 + (9.0/5.0)*@celsjusz def fahrenheit=(temp) @celsjusz = (5.0/9.0)*(temp - 32) Marcin Młotkowski Programowanie obiektowe 354 / 391

Wirtualny atrybut Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas temp = Temperatura.new(36.6) temp.fahrenheit 97.88 temp.fahrenheit = 32 Marcin Młotkowski Programowanie obiektowe 355 / 391

Składnia Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas class Cwiczenia < Ksiazka def initialize(tytul, autor, wydanie, cena) super(tytul, autor, wydanie) @cena = cena def to_s super+ @cena.to_s Marcin Młotkowski Programowanie obiektowe 356 / 391

Pola Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas Pola obiektów są prywatne. Marcin Młotkowski Programowanie obiektowe 357 / 391

Rodzaje metod Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas metody publiczne domyślnie metody są publiczne, z wyjątkiem initialize; metody chronione są to metody, do których dostęp mają tylko obiekty tej samej klasy i klas potomnych; metody prywatne dostęp jest jedynie w kontekście bieżącego obiektu. Marcin Młotkowski Programowanie obiektowe 358 / 391

Definiowanie dostępu do metod Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas class Klasa def metoda1 private def metoda2 def metoda3 protected def metoda4 def metoda5 Marcin Młotkowski Programowanie obiektowe 359 / 391

Zmiennna klasy Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas class Klasa @@licznik = 0 def initialize @@licznik += 1 Marcin Młotkowski Programowanie obiektowe 360 / 391

Metody statyczne Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas class Klasa @@licznik = 0 def initialize @@licznik += 1 def Klasa.info print "Jest #{@@licznik} obiektów tej klasy" Marcin Młotkowski Programowanie obiektowe 361 / 391

Jak to zrobić Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas Już zadeklarowane klasy można rozszerzać Marcin Młotkowski Programowanie obiektowe 362 / 391

Jak to zrobić Wstęp Deklaracja klasy Dziedziczenie Kontrola dostępu Zmienne i metody klasy (statyczne) Rozszerzanie istniejących klas Już zadeklarowane klasy można rozszerzać Przykład class Fixnum def next self+ 1 Marcin Młotkowski Programowanie obiektowe 362 / 391