Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson...
Transcript of Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson...
![Page 1: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/1.jpg)
Diagrama de ClassesSemana 4 - IF62C
prof. Robinson Vida ([email protected])
1Friday, February 8, 2013
![Page 2: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/2.jpg)
Função do Diagrama de Classes
Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e métodos.
representar o relacionamento, o complemento e a transmissão de informações entre as classes que compõe o sistema.
2Friday, February 8, 2013
![Page 3: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/3.jpg)
Acoplamento e Coesão
Acoplamento e Coesão são dois conceitos importantes no projeto das classes, componentes ou elementos que irão formar um software. !
3Friday, February 8, 2013
![Page 4: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/4.jpg)
Coesão! Coesão é o grau que indica se as responsabilidades de uma classe formam uma unidade de significado. Ou seja, uma alta coesão é obtida pela associação em um único componente de tarefas que se relacionam de alguma maneira.
4Friday, February 8, 2013
![Page 5: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/5.jpg)
Acoplamento ! Acoplamento, por outro lado, descreve as relações entre os componentes do software. De forma geral, é desejável reduzir a quantidade de acoplamento tanto quanto o possível. Conecções entre os componentes do software inibem a facilidade de desenvolvimento, modificação e reuso dos componentes. O acoplamento acontece quando um componente de software precisa acessar informações armazenadas em um outro componente.
5Friday, February 8, 2013
![Page 6: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/6.jpg)
Visibilidade ou Tipos de Acessoutilizada para indicar o nível de acessibilidade de um determinado atributo ou tipo de acesso.
Ela pode ser de 4 tipos, a saber:
privada ou private ( - )
protegida ou protected ( # )
publica ou public ( + )
pacote ou package ( ~)6Friday, February 8, 2013
![Page 7: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/7.jpg)
Visibilidade Privada ( - )
significa que apenas os objetos da classe detentora do atributo ou método poderão ter acesso de visualização ou utilização.
7Friday, February 8, 2013
![Page 8: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/8.jpg)
Visibilidade Protegida ( # )
determina que além dos objetos da classe detentora do atributo ou método, os objetos das subclasses também poderão acessar esse atributo ou método protegido.
8Friday, February 8, 2013
![Page 9: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/9.jpg)
Visibilidade Publica ( + )
Todo e qualquer objeto do sistema pode ter acesso ao atributo ou método declarado como público.
9Friday, February 8, 2013
![Page 10: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/10.jpg)
Visibilidade de Pacote ( ~)
poucas linguagens implementam.
Atributos e métodos declarados com a visibilidade de pacote ( ~) poderão ser acessados por qualquer objeto pertencente ao pacote que ele estiver inserido.
10Friday, February 8, 2013
![Page 11: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/11.jpg)
Estrutura
11Friday, February 8, 2013
![Page 12: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/12.jpg)
Exemplo
12Friday, February 8, 2013
![Page 13: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/13.jpg)
Exemplo
13Friday, February 8, 2013
![Page 14: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/14.jpg)
Do diagrama para o código C++
// arquivo NomedaClasse.h #pragma once class NomedaClasse { private: int attribute1; proteced: char attribute2; public: int getAttribute1(); void setAttribute1(int); char getAttribute2(); void setAttribute2(char); }
// arquivo NomedaClasse.cpp #include “NomedaClasse.h”
int NomedaClasse::getAttribute1(){} void NomedaClasse::setAtribute1(int v){} char NomedaClasse::getAttribute2(){} void NomedaClasse::setAttribute2(char v){}
14Friday, February 8, 2013
![Page 15: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/15.jpg)
Do diagrama para o código java
// arquivo NomedaClasse.java public class NomedaClasse { private int attribute1; proteced char attribute2; public int getAttribute1() {return 0;} public void setAttribute1(int v) {} public char getAttribute2() { return null;} public void setAttribute2 (char v) {} }
15Friday, February 8, 2013
![Page 16: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/16.jpg)
Instâncias de Classe - Java
package exemplointerface;
public class Main {
public static void main(String[] args) { Janela j = new Janela(); j.setVisible(true); }
}
16Friday, February 8, 2013
![Page 17: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/17.jpg)
Instâncias de Classe - C++#include <cstdlib>#include "NumeroComplexo.h"
using namespace std;
int main(int argc, char** argv) { NumeroComplexo a(9,8); // alocação estática de memória NumeroComplexo *b; // alocação dinamica de memória b = new NumeroComplexo(4,5);
a.print(); b->print();
delete b; // remoção da memoria alocada. return 0;}
17Friday, February 8, 2013
![Page 18: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/18.jpg)
Definição da Classe - C++#ifndef NUMEROCOMPLEXO_H#define! NUMEROCOMPLEXO_H
class NumeroComplexo {public: NumeroComplexo(); NumeroComplexo(int _x,int _y); int getReal(); int getImag(); void setReal(int _v); void setImag(int _v); void print(); virtual ~NumeroComplexo();private: int real; int imag;};
#endif! /* NUMEROCOMPLEXO_H */
18Friday, February 8, 2013
![Page 19: Diagrama de Classes - professorvida.com.br · Diagrama de Classes Semana 4 - IF62C prof. Robinson Vida ( vida@utfpr.edu.br ) Friday, February 8, 2013 1](https://reader034.fdocuments.net/reader034/viewer/2022050409/5f86344822813c771e41f9e9/html5/thumbnails/19.jpg)
Definição da Classe - C++#include "NumeroComplexo.h"#include <stdio.h>
NumeroComplexo::NumeroComplexo() {}
NumeroComplexo::NumeroComplexo(int _x,int _y) { real = _x; imag = _y;}
NumeroComplexo::~NumeroComplexo() {}
int NumeroComplexo::getImag(){return imag;}int NumeroComplexo::getReal(){return real;}void NumeroComplexo::setImag(int _v){imag = _v;}void NumeroComplexo::setReal(int _v){real = _v;}void NumeroComplexo::print(){printf("%i + j(%i) \n", real, imag);}
19Friday, February 8, 2013