Upload
lythu
View
217
Download
0
Embed Size (px)
Citation preview
Introdução à orientação a
objetos
João Tito Almeida Vianna
18/05/2013
Roteiro – Aula 1
Introdução: • Programação estruturada x Orientação a objetos
Orientação a objetos
• Classe e objeto
• Encapsulamento
• Herança
• Polimorfismo
Exemplo prático: Fontes lineares
2
Introdução –
Programação Estruturada Estrutura lógica clara.
Fácil manutenção do código.
Três estruturas básicas.
Representação de qualquer algoritmo.
3
Introdução –
Programação Estruturada
Unidade básica: função.
◦ Função: sequência de comandos que, por ser executada muitas
vezes ao longo do programa, é separada do código principal
em um módulo, o qual é chamado de dentro do programa.
◦ O hábito de criar funções torna o código mais organizado
e otimiza o uso de memória pelo código
4
Introdução –
Orientação a Objetos
Novo paradigma de programação.
Busca por facilitar escrita de programas, tornar o processo intuitivo.
Introdução da ideia de classe e objeto.
Programa deve ser visto como conjunto de objetos capazes de interagir entre si.
5
Introdução –
Orientação a Objetos
Introdução da ideia de classe e objeto.
Classe:
◦ estrutura de dados que contém tanto campos de
dados (variáveis próprias) como seus próprios
métodos (funções).
Objeto:
◦ É uma instância de classe.
6
Introdução –
Orientação a Objetos
Para entendimento da diferença entre classe
e objeto, algo importante a esta altura, é
válida a seguinte analogia:
É como se a classe fosse o “tipo” de objeto.
Declaração de variáveis
Programação estruturada Orientação a objetos
[tipo de variável] [nome delas] [classe das variáveis] [nome]
int x; Conta contaCorrente;
7
Introdução –
Orientação a Objetos
Classe: define a estrutura.
Objeto: implementação.
8
Introdução –
Visão geral
Visão dos paradigmas apresentados:
Orientação a
objetos
Programação
Estruturada
Enfoque Objetos Ações
Unidade básica Classe Função
9
Orientação a Objetos –
Classe
Outra forma de entender o que é uma classe,
parte de outra analogia com a programação
estruturada.
A estrutura (struct) em na programação
estruturada é a definição de um novo tipo de
variável, contendo um conjunto de variáveis.
10
Orientação a Objetos –
Classe
Na linguagem C:
typedef struct aluno
{
char nome[50];
int numeroDeMatricula;
int dataDeNascimento[3];
char curso[30];
} aluno;
11
Orientação a Objetos –
Classe
A classe pode ser vista como uma struct com um nível a mais de complexidade: além das variáveis, temos também funções associadas a ela. Além disso, toda classe tem um construtor associado a ela, responsável por inicializar o objeto quando ele é criado (declarado).
As variáveis são conhecidas como atributos, e as funções como métodos.
12
Orientação a Objetos –
Classe
O construtor tem sempre obrigatoriamente o mesmo
nome da classe.
Programação Estruturada Orientação a objetos
Struct Classe
• Variáveis • Atributos
• Métodos
• Construtor
13
Orientação a Objetos –
Classe Em java:
public class Aluno
{
private String nome;
private int numeroDeMatricula;
private int[] dataDeNascimento = new int[3];
private String curso;
public Aluno(String N, int Mat, int[] Nasc, String cur)
{
nome = N;
numeroDeMatricula = Mat;
dataDeNascimento = Nasc;
curso = cur;
}
. . .
Atributos
Construtor
de classe
14
Orientação a Objetos –
Classe
public void setNumeroMatricula(int novo)
{
numeroDeMatricula = novo
}
public void setCurso(String cur)
{
curso = cur;
}
public String getNome()
{
return nome;
}
}
Métodos da
classe
15
Orientação a Objetos –
Encapsulamento
Proteção dos atributos da classe, tornando-os
acessíveis somente através de suas próprias
funções.
16
Orientação a Objetos –
Encapsulamento
Especificadores de acesso a membro:
◦ public: membro pode ser acessado de
qualquer parte do programa.
◦ private: membro só é acessível através dos
métodos da classe.
◦ protected: membro acessível à classe e às
suas subclasses.
17
Orientação a Objetos –
Encapsulamento Em java:
public class Aluno
{
private String nome;
private int numeroDeMatricula;
private int[] dataDeNascimento = new int[3];
private String curso;
public Aluno(String N, int Mat, int[] Nasc, String cur)
{
nome = N;
numeroDeMatricula = Mat;
dataDeNascimento = Nasc;
curso = cur;
}
. . .
Atributos
privados
Construtor
de classe
public
(sempre)
18
Orientação a Objetos –
Encapsulamento
public void setNumeroMatricula(int novo)
{
numeroDeMatricula = novo
}
public void setCurso(String cur)
{
curso = cur;
}
public String getNome()
{
return nome;
}
}
Métodos da
classe
public
19
Orientação a Objetos –
Encapsulamento
“Procedimento padrão”:
◦ Atributos todos private.
◦ Criação da função “getAtributo()” tipo public,
a qual devolve o valor do atributo.
◦ Criação da função “setAtributo(input)” do
tipo public, a qual altera o valor do atributo.
20
Orientação a Objetos –
Encapsulamento public class Aluno
{
private String nome;
private int numeroDeMatricula;
private int[] dataDeNascimento = new int[3];
private String curso;
public void setCurso(String cur)
{
curso = cur;
}
public String getNome()
{
return nome;
}
Atributos
Métodos
21
Orientação a Objetos –
Herança
Herança: Definição de uma classe como extensão da
outra.
o Melhor aproveitamento do código.
o Evita duplicação.
o Facilita manutenção.
• A subclasse herda todos os métodos e atributos da
superclasse e pode definir seus próprios.
22
Orientação a Objetos –
Herança Classe base
ou
Superclasse
Subclasse
23
Orientação a Objetos –
Herança
Na subclasse pode-se inclusive, redefinir
uma função de sua superclasse,
redefinindo-a da forma adequada. Esse
fenômeno é denominado polimorfismo.
A criação de subclasses pode envolver a
criação de uma superclasse abstrata.
24
Orientação a Objetos –
Herança
Classe abstrata:
◦ Representa um conceito abstrato.
◦ Não possui instâncias (objetos).
◦ Define modelo, que é compartilhado por um
conjunto de subclasses.
◦ Cada uma das subclasses completa a
funcionalidade da classe abstrata adicionando
comportamento específico.
25
Exemplo prático: Fontes lineares
Fonte de tensão linear: topologia dividida
em quatro partes:
26
Exemplo prático: Fontes lineares
27
Referências
[1] Reis, G. R., Material do minicurso: "C++ e Programação Orientada a Objetos", ministrado na XXXIII Semana da Engenharia, 2010.
[2] Bohm, Corrado; and Giuseppe Jacopini (May 1966). "Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules". Communications of the ACM 9 (5): 366–371.
[3] Dijkstra, E. "Go-to statement considered harmful", em Commun. ACM 11 (1968), 3: 147–148. (http://www.cs.utexas.edu/~EWD/ewd02xx/EWD215.PDF)
28