Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a...

Post on 25-Jan-2019

238 views 0 download

Transcript of Diagrama de Classes - professorvida.com.br · Função do Diagrama de Classes Permitir a...

Diagrama de ClassesConceitos Básicos

prof. Robinson Vida (vida@utfpr.edu.br)

1Monday, April 20, 15

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.

2Monday, April 20, 15

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. !

3Monday, April 20, 15

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.

4Monday, April 20, 15

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.

5Monday, April 20, 15

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 ( ~)6Monday, April 20, 15

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.

7Monday, April 20, 15

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.

8Monday, April 20, 15

Visibilidade Publica ( + )

Todo e qualquer objeto do sistema pode ter acesso ao atributo ou método declarado como público.

9Monday, April 20, 15

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.

10Monday, April 20, 15

Estrutura

11Monday, April 20, 15

Exemplo

12Monday, April 20, 15

Exemplo

13Monday, April 20, 15

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){}

14Monday, April 20, 15

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) {} }

15Monday, April 20, 15

Instâncias de Classe - Java

package exemplointerface;

public class Main {

public static void main(String[] args) { Janela j = new Janela(); j.setVisible(true); }

}

16Monday, April 20, 15

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;}

17Monday, April 20, 15

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 */

18Monday, April 20, 15

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);}

19Monday, April 20, 15