09 szablony klas


Szablony klas  Wprowadzenie
Przykład wykorzystania szablonu
Wprowadzenie do szablonów klas
Bogdan Kreczmer
bogdan.kreczmer@pwr.wroc.pl
Zakład Podstaw Cybernetyki i Robotyki
Instytut Informatyki, Automatyki i Robotyki
Politechnika Wrocławska
Kurs: Programowanie obiektowe
Copyright©2008-2010 Bogdan Kreczmer
Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on
udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany
wyłącznie w całości, razem z niniejszą stroną tytułową.
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie
Przykład wykorzystania szablonu
Niniejsza prezentacja została wykonana przy użyciu sys-
A
temu składu LTEX oraz stylubeamer, którego autorem
jest Till Tantau.
Strona domowa projektuBeamer:
http://latex-beamer.sourceforge.net
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie
Przykład wykorzystania szablonu
1
Szablony klas  Wprowadzenie
Najważniejsze cechy
Proste szablony
2
Przykład wykorzystania szablonu
Klasy z definicjÄ… podtypu
Szablon dla klasy z podtypem
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Szablony klas
Szablony klas pozwalają na przedstawienie ogólnych pojęć i
wzajemnych ich związków.
Pozwalają na abstrahowanie od typu poszczególnych
atrybutów związanych z danym pojęciem.
Pozwalają programiście skoncentrować na ogólnych
zależnościach i mechanizmach.
Szablony pozwalają na generowanie i optymalizowania już na
etapie kompilacji poprzez użycie specyficznych konstrukcji
programistycznych.
Umożliwiają realizację idei programowania uogólnionego.
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Szablony klas
Szablony klas pozwalają na przedstawienie ogólnych pojęć i
wzajemnych ich związków.
Pozwalają na abstrahowanie od typu poszczególnych
atrybutów związanych z danym pojęciem.
Pozwalają programiście skoncentrować na ogólnych
zależnościach i mechanizmach.
Szablony pozwalają na generowanie i optymalizowania już na
etapie kompilacji poprzez użycie specyficznych konstrukcji
programistycznych.
Umożliwiają realizację idei programowania uogólnionego.
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Szablony klas
Szablony klas pozwalają na przedstawienie ogólnych pojęć i
wzajemnych ich związków.
Pozwalają na abstrahowanie od typu poszczególnych
atrybutów związanych z danym pojęciem.
Pozwalają programiście skoncentrować na ogólnych
zależnościach i mechanizmach.
Szablony pozwalają na generowanie i optymalizowania już na
etapie kompilacji poprzez użycie specyficznych konstrukcji
programistycznych.
Umożliwiają realizację idei programowania uogólnionego.
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Szablony klas
Szablony klas pozwalają na przedstawienie ogólnych pojęć i
wzajemnych ich związków.
Pozwalają na abstrahowanie od typu poszczególnych
atrybutów związanych z danym pojęciem.
Pozwalają programiście skoncentrować na ogólnych
zależnościach i mechanizmach.
Szablony pozwalają na generowanie i optymalizowania już na
etapie kompilacji poprzez użycie specyficznych konstrukcji
programistycznych.
Umożliwiają realizację idei programowania uogólnionego.
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Szablony klas
Szablony klas pozwalają na przedstawienie ogólnych pojęć i
wzajemnych ich związków.
Pozwalają na abstrahowanie od typu poszczególnych
atrybutów związanych z danym pojęciem.
Pozwalają programiście skoncentrować na ogólnych
zależnościach i mechanizmach.
Szablony pozwalają na generowanie i optymalizowania już na
etapie kompilacji poprzez użycie specyficznych konstrukcji
programistycznych.
Umożliwiają realizację idei programowania uogólnionego.
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Problemy z tłumaczeniem
template

wzorzec szablon
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Problemy z tłumaczeniem
template

wzorzec szablon
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Ogólna postać szablonu
template
class Klasa {
. . .
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Ogólna postać szablonu
template
class Klasa {
. . .
};
Dopuszczalne parametry:
typ wbudowany lub zdefiniowany przez użytkownika,
stała w czasie kompilacji (liczba, wskaznik, znaki itp.),
inny szablon.
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Ogólna postać szablonu
template
class Klasa {
. . .
};
Dopuszczalne parametry:
typ wbudowany lub zdefiniowany przez użytkownika,
stała w czasie kompilacji (liczba, wskaznik, znaki itp.),
inny szablon.
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Ogólna postać szablonu
template
class Klasa {
. . .
};
Dopuszczalne parametry:
typ wbudowany lub zdefiniowany przez użytkownika,
stała w czasie kompilacji (liczba, wskaznik, znaki itp.),
inny szablon.
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Ogólna postać szablonu
template
class Klasa {
. . .
};
Dopuszczalne parametry:
typ wbudowany lub zdefiniowany przez użytkownika,
stała w czasie kompilacji (liczba, wskaznik, znaki itp.),
inny szablon.
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
Słowo kluczowe typename sygnalizuje, że parametr szablonu jest
typem.
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
Tab[--
{ return ! Ilosc ? false : El = Ilosc], true; }


bool Poloz(const TYP& El)
El,
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = true; }


};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos>> St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[ROZ STOSU];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= ROZ STOSU ? false : Tab[ Ilosc++] = El, true; }
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[Rozmiar];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= Rozmiar ? false : Tab[ Ilosc++] = El, true; }
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[Rozmiar];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= Rozmiar ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[Rozmiar];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= Rozmiar ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Najważniejsze cechy
Przykład wykorzystania szablonu Proste szablony
Przykład szablonu stosu
template
class Stos {
TYP Tab[Rozmiar];
unsigned int Ilosc;
public :
Stos( ) { Ilosc = 0; }
bool Pobierz(TYP& El)
{ return ! Ilosc ? false : El = Tab[-- Ilosc], true; }
bool Poloz(const TYP& El)
{ return Ilosc>= Rozmiar ? false : Tab[ Ilosc++] = El, true; }
};
int main( )
{
Stos St;
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Klasa z typem wyliczeniowym
class EnkoderRobota {
int Stan;
public:
EnkoderRobota( ): Stan( ) {}
int Wez( ) const { return Stan; }
void Zmien(int Stan) { Stan = Stan; }
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Klasa z typem wyliczeniowym
class EnkoderRobota {
int Stan;
public:
EnkoderRobota( ): Stan( ) {}
int Wez( ) const { return Stan; }
void Zmien(int Stan) { Stan = Stan; }
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Klasa z typem wyliczeniowym
class EnkoderRobota {
int Stan;
public:
EnkoderRobota( ): Stan( ) {}
int Wez( ) const { return Stan; }
void Zmien(int Stan) { Stan = Stan; }
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
int main( )
{
EnkoderRobota Tab[EnkoderRobota::Ilosc];
Tab[EnkoderRobota::Naped].Zmien(2);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Klasa z typem wyliczeniowym
class EnkoderRobota {
int Stan;
public:
EnkoderRobota( ): Stan( ) {}
int Wez( ) const { return Stan; }
void Zmien(int Stan) { Stan = Stan; }
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
int main( )
{
EnkoderRobota Tab[EnkoderRobota::Ilosc];
Tab[EnkoderRobota::Naped].Zmien(2);
Tab[10].Zmien(2);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Klasa z typem wyliczeniowym
class EnkoderRobota {
int Stan;
public:
EnkoderRobota( ): Stan( ) {}
int Wez( ) const { return Stan; }
void Zmien(int Stan) { Stan = Stan; }
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
class PotencjometrRobota {
int Stan;
public:
PotencjometrRobota( ): Stan( ) {}
int Wez( ) const { return Stan; }
void Zmien(int Stan) { Stan = Stan; }
enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc};
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Synonimy dla nazw typów
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
class PotencjometrRobota {
. . .
enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc};
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Synonimy dla nazw typów
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
class PotencjometrRobota {
. . .
enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc};
};
int main( )
{
StanEnkRob StanEnk;
StanPotRob StanPot;
StanEnk.Wez(::Naped);
StanPot.Wez(::Noga1);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Synonimy dla nazw typów
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
class PotencjometrRobota {
. . .
enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc};
};
int main( )
{
StanEnkRob StanEnk;
StanPotRob StanPot;
StanEnk.Wez(::Naped);
StanPot.Wez(::Noga1);
StanPot.Wez(1);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Synonimy dla nazw typów
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
class PotencjometrRobota {
. . .
enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc};
};
int main( )
{
StanEnkRob StanEnk;
StanPotRob StanPot;
StanEnk.Wez(::Naped);
StanPot.Wez(::Noga1);
StanPot.Wez(1);
encoder.cpp: In function  int main() :
} encoder.cpp:62: error: invalid conversion from  int to  PotencjometrRobota::Urzadzenie
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Synonimy dla nazw typów
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
class PotencjometrRobota {
. . .
enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc};
};
int main( )
{
StanEnkRob StanEnk;
StanPotRob StanPot;
StanEnk.Wez(EnkoderRobota::Naped);
StanPot.Wez(PotencjometrRobota::Noga1);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Synonimy dla nazw typów
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
typedef PotencjometrRobota PotRob;
typedef EnkoderRobota EnkRob;
int main( )
{
StanEnkRob StanEnk;
StanPotRob StanPot;
StanEnk.Wez(EnkoderRobota::Naped);
StanPot.Wez(PotencjometrRobota::Noga1);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Synonimy dla nazw typów
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
typedef PotencjometrRobota PotRob;
typedef EnkoderRobota EnkRob;
int main( )
{
StanEnkRob StanEnk;
StanPotRob StanPot;
StanEnk.Wez(EnkRob::Naped);
StanPot.Wez(PotRob::Noga1);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Definicja szablonu
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
class PotencjometrRobota {
. . .
enum Urzadzenie { Noga1, Noga2, Noga3, Noga4, Ilosc};
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Definicja szablonu
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
template
class Stan {
TYP TabCzytn[TYP::Ilosc];
public:
int Wez(typename TYP::Urzadzenie Urz) const
{ return TabCzytn[Urz].Wez( ); }
void Zmien(typename TYP::Urzadzenie Urz, int Stan)
{ return TabCzytn[Urz].Zmien(Stan); }
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Definicja szablonu
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
template
class Stan {
TYP TabCzytn[TYP::Ilosc];
public:
int Wez(typename TYP::Urzadzenie Urz) const
{ return TabCzytn[Urz].Wez( ); }
void Zmien(typename TYP::Urzadzenie Urz, int Stan)
{ return TabCzytn[Urz].Zmien(Stan); }
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Definicja szablonu
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
template
class Stan {
TYP TabCzytn[TYP::Ilosc];
public:
int Wez(typename TYP::Urzadzenie Urz) const
{ return TabCzytn[Urz].Wez( ); }
void Zmien(typename TYP::Urzadzenie Urz, int Stan)
{ return TabCzytn[Urz].Zmien(Stan); }
};
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Wykorzystanie szablonu
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
template
class Stan {
TYP TabCzytn[TYP::Ilosc];
public:
int Wez(typename TYP::Urzadzenie Urz) const
. . .
};
int main()
{
Stan StanEnk;
StanEnk.Wez(EnkoderRobota::Naped);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Wykorzystanie szablonu
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
template
class Stan {
TYP TabCzytn[TYP::Ilosc];
public:
int Wez(typename TYP::Urzadzenie Urz) const
. . .
};
int main()
{
Stan StanEnk;
StanEnk.Wez(EnkoderRobota::Naped);
StanEnk.Wez(1);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Wykorzystanie szablonu
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
template
class Stan {
TYP TabCzytn[TYP::Ilosc];
public:
int Wez(typename TYP::Urzadzenie Urz) const
. . .
};
int main()
{
Stan StanEnk;
StanEnk.Wez(EnkoderRobota::Naped);
StanEnk.Wez(1);
encoder.cpp: In function  int main() :
} encoder.cpp:62: error: invalid conversion from  int to  PotencjometrRobota::Urzadzenie
encoder.cpp:62: error: initializing argument 1 of  int Stan::Wez(typename
TYP::Urzadzenie) const [with TYP = PotencjometrRobota]
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Synonimy nazw typów po raz drugi
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
template
class Stan {
. . .
public:
int Wez(typename TYP::Urzadzenie Urz) const
. . .
};
int main( )
{
StanStanEnkRob StanEnk;
StanEnk.Wez(EnkoderRobotaEnkRob::Naped);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Synonimy nazw typów po raz drugi
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
template
class Stan {
. . .
public:
int Wez(typename TYP::Urzadzenie Urz) const
. . .
};
typedef Stan StanEnkRob;
typedef EnkoderRobota EnkRob;
int main( )
{
StanStanEnkRob StanEnk;
StanEnk.Wez(EnkoderRobotaEnkRob::Naped);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Synonimy nazw typów po raz drugi
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
template
class Stan {
. . .
public:
int Wez(typename TYP::Urzadzenie Urz) const
. . .
};
typedef Stan StanEnkRob;
typedef EnkoderRobota EnkRob;
int main( )
{
StanStanEnkRob StanEnk;
StanEnk.Wez(EnkoderRobotaEnkRob::Naped);
}
Programowanie obiektowe Wprowadzenie do szablonów klas
Szablony klas  Wprowadzenie Klasy z definicjÄ… podtypu
Przykład wykorzystania szablonu Szablon dla klasy z podtypem
Synonimy nazw typów po raz drugi
class EnkoderRobota {
. . .
enum Urzadzenie { Naped, Skret, Wiezyczka, Ilosc};
};
. . .
template
class Stan {
. . .
public:
int Wez(typename TYP::Urzadzenie Urz) const
. . .
};
typedef Stan StanEnkRob;
typedef EnkoderRobota EnkRob;
int main( )
{
StanEnkRob StanEnk;
StanEnk.Wez(EnkRob::Naped);
}
Programowanie obiektowe Wprowadzenie do szablonów klas


Wyszukiwarka

Podobne podstrony:
09 szablony fun prez
w23 szablony klas
pref 09
amd102 io pl09
2002 09 Creating Virtual Worlds with Pov Ray and the Right Front End
Analiza?N Ocena dzialan na rzecz?zpieczenstwa energetycznego dostawy gazu listopad 09
2003 09 Genialne schematy
09 islam
GM Kalendarz 09 hum
9 szablonAI

więcej podobnych podstron