linguagem de programação iwiki.cbatista.net/lib/exe/fetch.php/lpi-cppemodelagemoo-171_pt1.pdf ·...

Post on 20-Jul-2020

7 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

LinguagemdeProgramaçãoI

CarlosEduardoBa6sta

CentrodeInformá6ca-UFPBbidu@ci.ufpb.br

C++ePOO

•  FundamentaçãodeOrientaçãoaObjetos(OO)•  SintaxebásicadeC++•  Modelagemdesistemasorientadaaobjetos

2

OrientaçãoaObjetos

•  Análiseeprojetoorientadosaobjetos=decomposiçãoorientadaaobjetosdeumsistemadesoMware

•  Coisas/en)dadesquecompõemosistema=objetos

•  Objetossãoinstânciasdeclasses•  Análiseestruturada=foconosprocedimentos

OrientaçãoaObjetos

•  Análiseeprojetoorientadosaobjetos– Aspectosdis6ntosdeumsistema– Modelológico:estruturadeclasseseobjetos– ModeloTsico:móduloseprocessos

•  Evoluçãodaslinguagens– Maismecanismosparacriaçãodeabstrações(linguagemdasolução)

•  Criaçãodemodelospararesoluçãodoproblema•  Problema->Abstração->Modelosolução

OrientaçãoaObjetos

•  Espaçodasoluçãoparaoespaçodoproblema•  Objetos– Pequenapartedoproblema– Estadoeoperações– Semelhantesaobjetosdomundoreal(caracterís6casecomportamentos...)

OrientaçãoaObjetos

•  OqueéumObjeto(emlinguagenscomoC++)– Éumavariávelque•  Armazenadadosestruturados(comoTADs)•  Possuioperações(funções)associadas

•  Objetos– Atributos•  Dados

– Métodos•  Funções

OrientaçãoaObjetos

OrientaçãoaObjetos

•  ProgramaescritoemlinguagemOO– Conjuntodeobjetosquesecomunicamatravésdemensagensparaaresoluçãodoproblemaabordado(requisitosfuncionais)

•  Mensagens– Chamadasafunçõesquepertencemaumobjetoespecífico

•  Classessãoos6posdosobjetos

8

OrientaçãoaObjetos

•  Classes– Definemcaracterís6cascomunsdosobjetos

•  Estadosdosobjetos– Valoresdosatributosindividuais

•  Cadaobjetopertenceaumaclasse,quedefineseucomportamentoesuascaracterís6cas

•  Conjuntodemétodosdeumobjeto=interface– Encapsulamentodefineavisibilidade

9

OrientaçãoaObjetos

10

Ven6ladorStringmodelo;intnumSerie;intqtdVento;liga();desliga();maisVento();menosVento();

UML

Métodos/Interface

NomedaClasse

Atributos

Ventilador v;v.liga();

OrientaçãoaObjetos

•  Interfaceversusimplementação•  Encapsulamento– Controledeacessoaatributosemétodos– Público,privado...–  Interface=métodospúblicos

•  Reuso

11

Encapsulamento

12

Carroprivate:Stringmodelo;Stringchassis;Motorm;public:liga();acelera(int);freia(int);private:liberaCombus6vel(int);freioABS(int);

Encapsulamento

13

Reuso•  Composição

14

Carroprivate:Stringmodelo;Stringchassis;Motorm;Rodar[4];Latariala;

Motor1

Roda

Lataria

4

1

Herança

•  Hierarquiadeclasses•  Classesmaisespecializadasherdamdasmaisgenéricas

•  Atributosemétodossãoherdados•  Classefilhaéum“6pode”ClassePai

15

Herança

16

Herança

17

PolígonoCorc;desenhar();apagar();definirCor(Corc);area();

Retângulo

desenhar();apagar();area();

Triângulo

desenhar();apagar();area();

Círculo

desenhar();apagar();area();

Polimorfismo•  Hierarquiapermitetratarobjetosporsuaclasse(6po)base– Facilitareusoeacréscimodenovassubclasses(sub6pos)

•  Polimorfismo– “oquepossuiváriasformas”

•  U6lizaromesmonomeparamétodosdiferentes–  Implementadosemdiferentesníveisdeumahierarquiadeclasses

18

Polimorfismo•  Universal–  Inclusão•  Poligonop=newCirculo(raio);

– Paramétrico•  Funçãopolimórfica(templates)

•  Ad-hoc– Sobrecarga•  adicionar(Circuloc)•  adicionar(Triangulot)

•  htp://www.catonmat.net/blog/cpp-polymorphism/

19

OrientaçãoaObjetosemC++

•  structxclass•  EmC++umastructpodeconterfunçõesefuncionarcomoumaclasse– Visibilidadepadrão,porém,édiferente

20

OrientaçãoaObjetosemC++

•  Instanciandoobjetos•  Invocandométodos

21

OrientaçãoaObjetosemC++

22

class Retangulo{public:

int altura, largura;int area(){

return altura*largura;}

};main(){

Retangulo r;r.altura=5;r.largura=2;cout << r.area();return 0;

}

OrientaçãoaObjetosemC++

23

class Retangulo{public:

int altura, largura;int area();

};int Retangulo::area()

{return altura*largura;

}main(){

Retangulo r;r.altura=5;r.largura=2;cout << r.area();return 0;

}

OrientaçãoaObjetosemC++

24

class Retangulo{private:

int altura, largura;public:

Retangulo(int a, int l) {altura=a;largura=l;

}int area() {

return altura*largura;}

};main() {

Retangulo r(5, 2);cout << r.area();return 0;

}

OrientaçãoaObjetosemC++

25

#ifndef RETANGULO_H#define RETANGULO_Hclass Retangulo{private:

int altura, largura;public:

int area();};#endif //RETANGULO_H

Retangulo.h

OrientaçãoaObjetosemC++

26

#include ‘Retangulo.h’

int Retangulo::area(){

return altura*largura;}

Retangulo.cpp

OrientaçãoaObjetosemC++•  Encapsulamento•  ClasseC++– Atributosemétodossãoprivados(private)porpadrão

•  StructC++– Atributosemétodossãopúblicos(public)porpadrão

•  Friend–  “Quebra”oencapsulamento–  Classeoufunçãoqueacessamembrosprivadosdeumaoutraclasse

–  Evitarusodemasiado

27

OrientaçãoaObjetosemC++

28

OrientaçãoaObjetosemC++

29

class X; // Declaração da classe Xclass Y {

public:void f(X*); // declaração de X...

};class X { // Definição de X

private:int i;public:void initialize();friend void Y::f(X*); // friend pertencente à Yfriend class Z; // A classe Z é friend

};void Y::f(X* x) {

x->i = 47;}

Próximaaula

•  FundamentaçãodeOrientaçãoaObjetos(OO).

•  ModelagemdesistemasorientadaaobjetosusandoC++

•  Modelagemdesistemasorientadaaobjetos.•  ConceitosbásicosdeAnáliseeProjetoOrientadoaObjetosu6lizandoaUML(UnifiedModelingLanguage).

30

Referências

•  htp://www.cplusplus.com/doc/tutorial/•  htp://gillius.org/ooptut/•  htp://people.cs.aau.dk/~normark/ap/basic-facili6es.html

•  htp://linuxgazete.net/issue55/williams.html

31

LinguagemdeProgramaçãoI

CarlosEduardoBa6sta

CentrodeInformá6ca-UFPBbidu@ci.ufpb.br

top related