Programowanie w Ruby

Podobne dokumenty
Programowanie w Ruby

Programowanie w Ruby

Programowanie obiektowe

Metaprogramowanie w Ruby

Programowanie w Ruby

Kurs rozszerzony języka Python

Programowanie w Ruby

Programowanie w Ruby

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

Dziedziczenie. dr Jarosław Skaruz

Programowanie obiektowe

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Programowanie w Ruby

Klasy abstrakcyjne, interfejsy i polimorfizm

PHP 5 język obiektowy

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie w Ruby

Programowanie obiektowe

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

Programowanie obiektowe - 1.

Podstawy programowania III

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Wstęp do ruby dla programistów javy

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

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Diagramy klas. dr Jarosław Skaruz

Programowanie obiektowe

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Programowanie w Ruby

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie obiektowe

Programowanie obiektowe

Scala - programowanie obiektowo-funkcyjne

Wstęp do programowania obiektowego. Wykład 2

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

private - oznacza, że wszystkie elementy klasy bazowej zmieniają się w prywatne.

Programowanie obiektowe w języku

Aplikacje w środowisku Java

Programowanie obiektowe

Programowanie w Ruby

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

.NET Klasy, obiekty. ciąg dalszy

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

Materiały do zajęć VII

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Programowanie 2. Język C++. Wykład 3.

Dokumentacja do API Javy.

Programowanie obiektowe

Pola i metody statyczne

Do czego służą klasy?

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie Obiektowe i C++

JAVA W SUPER EXPRESOWEJ PIGUŁCE

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

PARADYGMATY PROGRAMOWANIA Wykład 2

Wstęp do programowania 2

Wykład 9: Polimorfizm i klasy wirtualne

Spis treści. Dekoratory. 1 Dekoratory 1.1 Zadanie Zadanie Zadanie Zadanie 4

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Definiowanie własnych klas

Programowanie w Internecie. Java

Język Java część 2 (przykładowa aplikacja)

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Programowanie i projektowanie obiektowe

Wykład 4: Klasy i Metody

Zaawansowane programowanie w C++ (PCP)

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm. dr Jarosław Skaruz

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Java Język programowania

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Programowanie Komputerów

Programowanie obiektowe

Ada-95. Dariusz Wawrzyniak

Programowanie obiektowe

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Mechanizm dziedziczenia

Dziedziczenie. Tomasz Borzyszkowski

Programowanie w Javie wykład 8 Interfejsy

Aplikacje w środowisku Java

Kurs WWW. Paweł Rajba.

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Podstawy Programowania Obiektowego

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykªad nr 4 Programowanie obiektowe

Język Java część 2 (przykładowa aplikacja)

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Programowanie w Ruby

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

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Wprowadzenie do języka Ruby

Ćwiczenie 5. Python 3: Programowanie obiektowe i dziedziczenie

Transkrypt:

Programowanie w Ruby Wykład 4 Marcin Młotkowski 29 października 2018

Plan wykładu 1 2 3 Marcin Młotkowski Programowanie w Ruby 100 / 430

Deklaracja klasy class Device Marcin Młotkowski Programowanie w Ruby 101 / 430

Konstruktor class Device def initialize(name, type) @name = name @type = type Marcin Młotkowski Programowanie w Ruby 102 / 430

Deklaracja metody class Device def initialize(name, type)... def to s @name + + @type Marcin Młotkowski Programowanie w Ruby 103 / 430

Utworzenie obiektu prive = Device.new( /dev/sdc, kingston ) puts prive.to s Marcin Młotkowski Programowanie w Ruby 104 / 430

Dygresja Konwencja # równoważne: puts prive.to s puts prive Marcin Młotkowski Programowanie w Ruby 105 / 430

Zmienne obiektu (zmienne instancyjne) Składnia @nazwa Zmienne instancyjne są prywatne. Marcin Młotkowski Programowanie w Ruby 106 / 430

Dostęp do zmiennych obiektu (akcesory) class Device def name @name def zmien nazwe(nowa) @name = nowa Marcin Młotkowski Programowanie w Ruby 107 / 430

Inny modyfikator class Device def name=(nowa) @name = nowa prive.name = Corsair Marcin Młotkowski Programowanie w Ruby 108 / 430

Deklaracja akcesorów Deklaracja class Device attr reader :name Równoważne class Device def name @name Marcin Młotkowski Programowanie w Ruby 109 / 430

Modyfikatory Zamiast pisać tak class Device def name=(nowa) @name = nowa Można napisać tak class Device attr writer :name Marcin Młotkowski Programowanie w Ruby 110 / 430

Akcesor odczyt/zapis class Device attr accessor :name Marcin Młotkowski Programowanie w Ruby 111 / 430

Atrybuty wirtualne class Device attr reader :name def long name @type + ---> + @name Użycie puts prive.name puts prive.long name Marcin Młotkowski Programowanie w Ruby 112 / 430

Atrybuty wirtualne Implementacja obiektu reprezentującego temperaturę class Temperatura attr reader :temperatura Marcin Młotkowski Programowanie w Ruby 113 / 430

Atrybuty wirtualne Implementacja obiektu reprezentującego temperaturę class Temperatura attr reader :temperatura Skale temperaturowe: Celsius Kelvin Fahrenheit Reamur Marcin Młotkowski Programowanie w Ruby 113 / 430

Skale temperaturowe class Temperatura attr accessor :kelvin def celsius=(c) @kelvin = 273.15 + c def celsius return @kelvin - 273.15 def fahrenheit=(f) @kelvin = (f - 32) * (5/9) + 273.15 def fahrenheit return (@kelvin - 273.15)*(9/5) + 32 Marcin Młotkowski Programowanie w Ruby 114 / 430

Przykłady użycia t = Temperatura.new t.kelvin = 273.15 puts Cels #{t.celsius}, fahr #{t.fahrenheit} Cels 0.0, fahr 32.0 Marcin Młotkowski Programowanie w Ruby 115 / 430

Metody singletonowe t = Temperatura.new t.kelvin = 273.15 Skala Reaumura def t.reaumur; (@kelvin - 273.15)*(5/4) puts t.reaumur Marcin Młotkowski Programowanie w Ruby 116 / 430

Zmienne i metody klasy (statyczne) class Device @@liczba = 0 def initialize @@liczba = @@liczba + 1 Marcin Młotkowski Programowanie w Ruby 117 / 430

Zmienne i metody klasy (statyczne) class Device @@liczba = 0 def initialize @@liczba = @@liczba + 1 def Device.licznik @@liczba.to s Marcin Młotkowski Programowanie w Ruby 117 / 430

Kontrola dostępu do pól i metod Zmienne klasy i obiektu są prywatne Metody klasy i obiektu są publiczne Marcin Młotkowski Programowanie w Ruby 118 / 430

Metody protected Można korzystać w podklasach Można korzystać w metodach obiektów tej samej klasy Składnia class Device protected def scan def block protected :block Marcin Młotkowski Programowanie w Ruby 119 / 430

Metody prywatne Można je wywoływać wyłącznie w postaci self.metoda prywatna Marcin Młotkowski Programowanie w Ruby 120 / 430

Deklarowanie podklasy class Printer < Device Marcin Młotkowski Programowanie w Ruby 121 / 430

Konstruktor w podklasie class Printer < Device def initialize(name, type, port) super(name, type) @port = port Marcin Młotkowski Programowanie w Ruby 122 / 430

Dziedziczenie i przykrywanie metod Przykład class Device def to s... class Printer < Device... iglowka = Printer.new( biurkowa, dot printer, PRN: ) puts iglowka # puts iglowka.to s Wynik biurkowa dot printer Marcin Młotkowski Programowanie w Ruby 123 / 430

Ulepszenie metody to s Pierwsza wersja class Printer < Device def to s super.to s + #{@port} Marcin Młotkowski Programowanie w Ruby 124 / 430

Ulepszenie metody to s Pierwsza wersja class Printer < Device def to s super.to s + #{@port} Druga wersja class Printer < Device def to s super + #{@port} Marcin Młotkowski Programowanie w Ruby 124 / 430

Na koniec o metodach Wszystkie metody są wirtualne. Marcin Młotkowski Programowanie w Ruby 125 / 430

Plan wykładu 1 2 3 Marcin Młotkowski Programowanie w Ruby 126 / 430

Co to jest mixin Mixin mechanizm włączania kodu modułu do deklaracji klasy Marcin Młotkowski Programowanie w Ruby 127 / 430

Przykład Zadanie Zdefinowanie modułu do odczytywania stanu obiektu Marcin Młotkowski Programowanie w Ruby 128 / 430

Implementacja modułu module Debugger def snapshot puts Stan obiektu klasy #{self.class} for iv in self.instance variables puts #{iv} = #{self.instance variable get(iv)} Marcin Młotkowski Programowanie w Ruby 129 / 430

Wmiksowanie modułu do klasy class Drukarka < Device include Debugger... Marcin Młotkowski Programowanie w Ruby 130 / 430

Zastosowanie lokalna = Drukarka.new( kuchenna, hp5000n, /dev/ ) lokalna.snapshot Marcin Młotkowski Programowanie w Ruby 131 / 430

Inne zastosowania Moduł (mixin) Comparable implementuje operatory porównania <, <=, ==, >=, > i metodę between? wymaga implementacji operatora <=> Marcin Młotkowski Programowanie w Ruby 132 / 430

Zastosowanie modułu Comparable class Wektor include Comparable def <=> (awektor) # zwraca -1 gdy self< awektor, 0 lub 1 Zastosowanie w1 = Wektor.new([3, -4, 5]) w2 = Wektor.new([-5, 12, -2]) w1 < w1 w1 >= w2 Marcin Młotkowski Programowanie w Ruby 133 / 430

Plan wykładu 1 2 3 Marcin Młotkowski Programowanie w Ruby 134 / 430

Wszystkie klasy są podklasami klasy Object Metody klasy Object class - klasa obiektu instance variables freeze to s i inne... Marcin Młotkowski Programowanie w Ruby 135 / 430

Chwila rozrywki (irb)> 5.class Fixnum Marcin Młotkowski Programowanie w Ruby 136 / 430

Chwila rozrywki (irb)> 5.class Fixnum (irb)> 5.class.class Class Marcin Młotkowski Programowanie w Ruby 136 / 430

Chwila rozrywki (irb)> 5.class Fixnum (irb)> 5.class.class Class (irb)> 5.class.class.class Class Marcin Młotkowski Programowanie w Ruby 136 / 430

Zmiana implementacji istniejącej klasy class Fixnum def to s return Niespodzianka! puts 5 Marcin Młotkowski Programowanie w Ruby 137 / 430

Zagnieżdżanie klasy w klasie class A class InA x = A::InA.new Marcin Młotkowski Programowanie w Ruby 138 / 430

Dostęp indeksowany class MyArray def [](i) return Zażądano #{i} def []=(i, v) puts [#{i}]= #{v} arr = MyArray.new arr[234] arr[34] = 16 Marcin Młotkowski Programowanie w Ruby 139 / 430