Buscar

Aula 02 - Orientação a Objetos - Anotacoes

Prévia do material em texto

16/03/14 
1 
Linguagem	
  de	
  
Programação	
  	
  
Orientada	
  a	
  Objeto	
  
Pergen4no	
  Araujo	
  
jpergen4no@gmail.com	
  
Programação	
  Orientada	
  a	
  
Objetos	
  
—  É	
  um	
  paradigma	
  de	
  análise,	
  projeto	
  e	
  programação	
  
de	
  sistemas	
  de	
  so?ware	
  baseado	
  na	
  composição	
  e	
  
interação	
   entre	
   diversas	
   unidades	
   de	
   so?ware	
  
chamadas	
  de	
  objetos.	
  
— Na	
  programação	
  orientada	
  a	
  objetos,	
   implementa-­‐
se	
  um	
  conjunto	
  de	
  classes	
  que	
  definem	
  os	
  objetos	
  
presentes	
   no	
   sistema	
   de	
   so#ware.	
   Cada	
   classe	
  
determina	
   o	
   comportamento	
   (definidos	
   nos	
  
métodos)	
   e	
   estados	
   possíveis	
   (atributos)	
   de	
   seus	
  
objetos,	
  assim	
  como	
  o	
  relacionamento	
  com	
  outros	
  
objetos.	
  
Os	
  Alicerces	
  da	
  POO	
  
— Abstração:	
  é	
  a	
  capacidade	
  de	
  representar	
  
cenários	
   complexos	
   usando	
   termos	
  
simples.	
  	
  
— Encapsulamento:	
  está	
   ligado	
  ao	
  conceito	
  
de	
   “esconder	
   informação”	
   (data	
   hiding),	
  
ou	
   seja,	
   consiste	
   em	
   esconder	
   	
   detalhes	
  	
  
da	
   	
   implementação	
   	
   e	
   	
   oferecer	
   	
   uma	
  	
  
interface	
  	
  comum	
  	
  aos	
  	
  objetos.	
  Portanto,	
  
saberemos	
  o	
  que	
  o	
  objeto	
  faz	
  e	
  não	
  como	
  
ele	
  faz.	
  	
  
16/03/14 
2 
Os	
  Alicerces	
  da	
  POO	
  
—  Herança:	
   possibilita	
   um	
   objeto	
   aproveitar	
   o	
  
comportamento	
  de	
  outro	
  objeto,	
   além	
  de	
  adaptar	
  	
  
esse	
   	
   comportamento	
   	
   aproveitado,	
   	
   tornando-­‐o	
  	
  
único,	
   	
   ou	
   	
   seja,	
   	
   a	
   	
   classe	
   	
   derivada	
   herda	
   as	
  
caracterís4cas	
   gerais	
   da	
   classe-­‐base	
   e	
   pode	
  
adicionar	
  capacidades	
  específicas.	
  	
  
— Polimorfismo:	
  é	
  a	
  capacidade	
  de	
  objetos	
  diferentes	
  
possuírem	
  métodos	
   com	
  o	
  mesmo	
  nome	
   e	
   com	
   a	
  
mesma	
  lista	
  de	
  parâmetros,	
  mas	
  que	
  a	
  maneira	
  de	
  
implementação	
   seja	
   diferente,	
   ou	
   seja,	
   executam	
  
de	
  forma	
  diferente.	
  	
  
Conceitos	
  Fundamentais	
  
—  Classe:	
   representa	
   um	
   conjunto	
   de	
   objetos	
   com	
   caracterís4cas	
  
afins.	
   Uma	
   classe	
   define	
   o	
   comportamento	
   de	
   seus	
   objetos	
  
através	
   de	
   métodos	
   e	
   os	
   estados	
   possíveis	
   destes	
   objetos	
  
através	
  de	
  atributos.	
  
—  Objeto:	
   é	
   a	
   representação	
   de	
   algo	
   que	
   existe.	
   Em	
   outras	
  
palavras	
  é	
  uma	
  instância	
  (concre4zação)	
  de	
  uma	
  classe.	
  	
  
—  Instância:	
  É	
  o	
  ato	
  de	
  transformar	
  uma	
  classe	
  em	
  um	
  objeto.	
  	
  
Conceitos	
  Fundamentais	
  
—  Uma	
   classe	
   é	
   um	
   4po	
   definido	
   pelo	
   usuário	
   que	
   contém	
   o	
  
molde,	
   a	
   especificação	
   para	
   os	
   objetos,	
   assim	
   como	
   o	
   4po	
  
inteiro	
   contém	
   o	
   molde	
   para	
   as	
   variáveis	
   declaradas	
   como	
  
inteiros.	
   A	
   classe	
   envolve,	
   associa,	
   métodos	
   e	
   dados,	
  
controlando	
  o	
  acesso	
  a	
  estes,	
  defini-­‐la	
  implica	
  em	
  especificar	
  os	
  
seus	
  ATRIBUTOS	
  (dados)	
  e	
  seus	
  SERVIÇOS	
  (código).	
  	
  
16/03/14 
3 
Estrutura	
  Básica	
  de	
  uma	
  Classe	
  
	
  
class	
  nome_da_classe	
  {	
  
	
   	
  atributos;	
  
	
   	
  metodos();	
  
};	
  
	
  	
  
Estrutura	
  Básica	
  de	
  uma	
  Classe	
  
class	
  Carro	
  {	
  
	
   	
  string	
  marca;	
  
	
   	
  string	
  modelo;	
  
	
   	
  double	
  tamanho;	
  
	
   	
  void	
  parar();	
  
	
   	
  void	
  acelerar();	
  
};	
  
	
  	
  
Atributos	
  	
  
(Propriedades	
  /	
  Variáveis)	
  
— A	
  todo	
  objeto	
  podemos	
  relacionar	
  alguns	
  atributos	
  
(propriedades).	
  
— Os	
  atributos	
  são	
  definidos	
  na	
  classe.	
  
— Um	
   atributo	
   pode	
   ser	
   um	
   4po	
   pré-­‐definido	
   na	
  
linguagem,	
  um	
  4po	
   	
  definido	
  pelo	
  programador	
  ou	
  
um	
  4po	
  de	
  uma	
  biblioteca	
  externa	
  (STL).	
  
— Na	
   programação	
   orientada	
   a	
   objeto,	
   os	
   atributos	
  
são	
   definidos	
   na	
   classe	
   e	
   armazenados	
   de	
   forma	
  
individual	
   ou	
   cole4va	
   pelos	
   objetos.	
   Portanto,	
  
temos	
  atributos	
  de	
  classe	
  e	
  atributos	
  de	
  objeto.	
  
16/03/14 
4 
Atributos	
  
Atributos	
  de	
  classe	
  (cole>vos)	
  	
  
Quando	
  um	
  atributos	
  é	
  dividido	
  entre	
  todos	
  os	
  objetos	
  criados,	
  ele	
  é	
  
amarzenado	
  na	
  classe.	
  
	
  
Atributos	
  de	
  objeto	
  (individuais)	
  
Quando	
  um	
  atributo	
  é	
  individual	
  ele	
  é	
  armazenado	
  no	
  objeto.	
  
Métodos	
  (Serviços	
  /	
  Funções)	
  
— A	
   todo	
   objeto	
   podemos	
   relacionar	
   determinados	
  
comportamentos,	
  ações	
  e	
  reações.	
  
— As	
   ações	
   ou	
   comportamentos	
   dos	
   objetos	
   são	
  
chamadas	
   na	
   análise	
   orientada	
   a	
   objeto	
   de	
  
métodos,	
   assim	
   um	
   método	
   é	
   um	
   função,	
   um	
  
serviço	
  fornecido	
  pelo	
  objeto.	
  
Métodos	
  (Serviços	
  /	
  Funções)	
  
— Os	
   comportamentos	
   dos	
   objetos	
   são	
   definidos	
   na	
  
classe	
  através	
  de	
  métodos	
  e	
  servem	
  para	
  manipular	
  
e	
   alterar	
   os	
   atributos	
   do	
   objeto	
   (alteram	
   o	
   estado	
  
do	
  objeto).	
  
—  Todo	
   método	
   deve	
   ter	
   um	
   retorno.	
   Quando	
   o	
  
método	
  não	
  retornar	
  nenhum	
  4po	
  deve	
  especificar	
  
o	
   4po	
   void.	
   O	
   uso	
   do	
   void	
   como	
   retorno	
   significa	
  
que	
  o	
  método	
  não	
  tem	
  retorno.	
  
16/03/14 
5 
Sobrecarga	
  de	
  Métodos	
  
— Permite	
   a	
   existência	
   de	
   vários	
  métodos	
  de	
  mesmo	
  
nome,	
  porém	
  com	
  assinaturas	
  levemente	
  diferentes	
  
ou	
  seja	
  variando	
  no	
  número	
  e	
  4po	
  de	
  argumentos	
  e	
  
no	
  valor	
  de	
  retorno.	
  	
  
—  Ficará	
   a	
   cargo	
   do	
   compilador	
   escolher	
   de	
   acordo	
  
com	
   as	
   listas	
   de	
   argumentos	
   os	
   procedimentos	
   ou	
  
métodos	
  a	
  serem	
  executados.	
  
Sobrecarga	
  de	
  Métodos	
  
class Calculadora { 
 int soma(int nro1, int nro2) { 
 return (nro1+nro2); 
 } 
 double soma(int nro1, double nro2) { 
 return (nro1+nro2); 
 } 
 double soma(double nro1, double nro2) { 
 return (nro1+nro2); 
 } 
}; 
Especificadores	
  de	
  Acesso	
  
private	
  
Só	
  pode	
  ser	
  acessado	
  pelos	
  métodos	
  da	
  classe.	
  
public	
  	
  
Pode	
   ser	
   acessado	
   de	
   qualquer	
   lugar	
   no	
   qual	
   a	
   classe	
   é	
  
vísivel.	
  
protected	
  
Só	
   pode	
   ser	
   acessado	
   pelo	
   métodosda	
   classe	
   e	
   pelos	
  
métodos	
  das	
  classes	
  derivadas.	
  
16/03/14 
6 
Especificadores	
  de	
  Acesso	
  
class	
  nome_da_classe	
  {	
  
	
  especificador_de_acesso_1	
  :	
  
	
   	
  membros_1	
  ;	
  
	
  especificador_de_acesso_2	
  :	
  
	
   	
  membros_2	
  ;	
  
} 	
  nome_do_objeto;	
  
	
  	
  
Especificadores	
  de	
  Acesso	
  
class	
  TPessoa	
  {	
  
	
  private:	
  
	
   	
  string	
  nome;	
  
	
  public:	
  
	
   	
  string	
  getNome();	
  
	
   	
  void	
  setNome(string	
  nome);	
  
} 	
  Pessoa;	
  
	
  	
  
Método	
  Construtor	
  
—  É	
  um	
  método	
  como	
  outro	
  qualquer	
  com	
  a	
  diferença	
  
de	
   ser	
   automa4camente	
   executado	
   quando	
   uma	
  
nova	
  instância	
  do	
  objeto	
  é	
  criado.	
  
—  Tal	
  método	
  geralmente	
  é	
  responsável	
  pela	
  alocação	
  
de	
   recursos	
   necessários	
   ao	
   funcionamento	
   do	
  
objeto	
   além	
   da	
   definição	
   inicial	
   das	
   variáveis	
   de	
  
estado	
  (atributos).	
  
— O	
  construtor	
  nunca	
  retorna	
  um	
  valor	
  e	
  não	
  precisa	
  
ser	
  especificado	
  como	
  void.	
  
	
  
16/03/14 
7 
Método	
  Construtor	
  
class	
  Pessoa	
  {	
  
	
   	
  string	
  nome;	
  
	
   	
  string	
  faculdade;	
  
	
   	
  string	
  cep;	
  
	
  public:	
  
	
   	
  Pessoa()	
  {	
  
	
   	
   	
  cep	
  =	
  “71000-­‐000”	
  
	
   	
  }	
  
};	
  
Método	
  Destrutor	
  
—  É	
  um	
  método	
  como	
  outro	
  qualquer	
  com	
  a	
  diferença	
  
de	
   ser	
   automa4camente	
   executado	
   quando	
   o	
  
objeto	
  é	
  liberado	
  da	
  memória.	
  
— O	
  uso	
  do	
  destrutor	
  é	
  especialmente	
  ú4l	
  quando	
  um	
  
objeto	
  atribui	
  memória	
  dinâmica	
   	
  durante	
  sua	
  vida	
  
e	
  que	
  no	
  momento	
  de	
  ser	
  destruído	
  queremos	
  que	
  
libere	
  a	
  memória	
  que	
  foi	
  usada.	
  	
  
— O	
   destrutor	
   precisa	
   ter	
   o	
   mesmo	
   nome	
   que	
   o	
   da	
  
classe	
   com	
   um	
   4l	
   (~)	
   como	
   prefixo	
   e	
   não	
   deve	
  
retornar	
  nenhum	
  valor.	
  	
  
	
  
Método	
  Destrutor	
  
class Nota { 
 int *A1; 
 Nota() { 
 A1 = new int; 
 } 
 ~Nota() { 
 delete A1; 
 } 
}; 
16/03/14 
8 
Sobrecarga	
  de	
  Construtor	
  
—  Como	
   qualquer	
   outra	
   função,	
   um	
   construtor	
   também	
  
pode	
   ser	
   sobrecarregado	
   com	
   diversas	
   funções	
   que	
  
possuem	
   o	
   mesmo	
   nome	
   mas	
   4po	
   ou	
   números	
   de	
  
parâmetros	
  diferentes.	
  
class	
  Quadrado	
  {	
  
	
   	
  int	
  lado;	
  
	
  public:	
  
	
   	
  Quadrado()	
  	
  {	
  	
  lado	
  =	
  0;	
  }	
  
	
   	
  Quadrado(int	
  L)	
  {	
  	
  lado	
  =	
  L;	
  	
  }	
  
}	
  
	
  
Herança	
  
—  Permite	
   a	
   criação	
   de	
   subclasses	
   que	
   herdam	
  
membros	
   da	
   classe	
   pai	
   (super-­‐classe	
   ou	
   classe	
  
base).	
  	
  
—  É	
  um	
  conceito	
  aplicado	
  no	
  momento	
  de	
  criação	
  das	
  
classes.	
   Ela	
   é	
   usada	
   na	
   intenção	
   de	
   evitar	
   que	
  
classes	
   que	
   possuam	
   atributos	
   ou	
   métodos	
  
semelhantes	
  sejam	
  repe4damente	
  criados.	
  
	
  
Herança	
  
class Aluno: public Pessoa { 
 string nome; 
 double mensalidade; 
}; 
class Professor: public Pessoa { 
 string nome; 
 double salario; 
}; 
class Pessoa { 
 private: 
 string cep; 
 protected: 
 string nome; 
};

Continue navegando