Básico de OO

Propaganda
Orientação a Objetos
Mauro César Lopes
[email protected]
Programação Estruturada x
Programação Orientada a Objetos


Programação Estruturada
Programação Orientada a Objetos
2
O que é programar ?

Programar é um exercício de
ABSTRAÇÃO
3
Estrutura


Estrutura do Computador
Estrutura do Problema
4
OO - Proposta

Permitir que os programadores
organizem os problemas da mesma
forma que as nossa mentes enxergam
os problemas: não como um conjunto
de espaços em memória, mas como um
conjunto de “coisas” que fazem parte
do problema.
5
OO - Proposta


Imaginar o problema como um conjunto
de objetos
Modificar a maneira como enxergamos
os programas (e os problemas)
6
Conceitos de OO





Objetos
Classes e instâncias
Herança
Polimorfismo
Classes Abstratas e Interfaces
7
Objetos


Um objeto é uma entidade concreta
Ele possui:



Atributos (dados/estados)
Métodos (ações/operações)
São instâncias de uma classe
8
Objetos - Exemplos



Um carro
Uma casa
Uma transação
9
Classes e Instâncias

É a criação de uma estrutura geral de
onde objetos podem ser derivados
10
Exemplos de linguages OO





C#
C++
Java
Python
Ruby
11
Herança


Herança de interface
Herança de implementação
Classe Base
Classe Derivada
12
Polimorfismo

É a possibilidade de dar um mesmo
método, por exemplo, variadas formas,
de acordo com o momento em que
você decide utilizá-lo
13
Classes Abstratas e Interfaces

Funciona como uma entidade neutra,
cuja existência é particularmente útil
apenas para exibir um modelo de
derivação.
14
Metodologia

“Todo conjunto de técnicas e práticas
utilizado para atingir algum objetivo”
15
Paradigmas de Programação

Modelos de programação
16
O que são objetos ?

Como particionar (dividir) o projeto de
acordo com essas entidades ?
17
Quais são suas interfaces ?

Que mensagens devem ser trocadas
entre os objetos?
18
Bibliografia

MATOS A. V. de. Unified Modeling
Language (UML) – Prático e
Descomplicado. Editora Érica: São
Paulo, 1992.
19
BACKUP
20
Classe



Classe é a raiz da palavra classificação
Ao projetar uma classe organizamos as
informações em uma entidade (aquilo
que constitui a natureza fundamental
ou a essência de uma coisa )
significativa
Essa organização é um ato de
classificação
21
Exemplos

Todos os carros compartilham
comportamentos comuns (eles podem
ser dirigidos, parados, acelerados, etc)
e atributos comuns (ele tem um
volante, um motor, rodas, etc)
22
Classes


As pessoas utilizam a palavra carro para
significar esses comportamentos e atributos
comuns
Desde que todos concordem com o que a
palavra significa, esse sistema funcionará
bem; você pode expressar idéias complexas
mas precisas de uma maneira concisa. Sem
classificação, é difícil imaginar como as
pessoas poderiam pensar ou se comunicar
23
Objeto

Objetos = dados + métodos
24
Encapsulamento


A idéia por trás do encapsulamento (ou
information hidding) é esconder a
implementação das classes
O usuário apenas instancia a classe e
utiliza seus métodos, não se
preocupando como os mesmos foram
implementados
25
Encapsulamento

Quando chamamos o método
Console.WriteLine, não estamos
preocupados como o método WriteLine
foi escrito e como ele interage com a
classe Console. Estamos preocupados
apenas em usá-lo para exibir uma
mensagem no console.
26
Definição de classes em C#

No C# é utilizada a palavra-chave class
para definir uma nova classe. Os
atributos e os métodos da classe
ocorrem no corpo da classe entre um
par de chaves
27
Exemplo
class Circulo
{
double Area() //
método
{
return Math.PI
* raio * raio;
}
int raio; //
atributo
}
Corpo da Classe
28
Instanciando a classe
Circulo c, c1, c2; // Cria uma variável do tipo Circulo
c = new Circulo(); // Inicializa a variável
c1 = new Circulo();
c2 = new Circulo();
Um objeto é uma instância de uma classe
29
Controle de Acessibilidade


Acesso public a métodos e dados 
poderão ser acessados externamente a
classe
Acesso private a métodos e dados 
somente poderão ser acessados dentro
da classe
30
Classe Circulo
Class Circulo
{
public double Area() // método público
{
return Math.PI * raio * raio;
}
private int raio; // atributo privado
}
31
Construtores
Class Circulo
{
public Circulo() // construtor padrão
{
raio=0;
}
public double Area() // método público
{
return Math.PI * raio * raio;
}
private int raio; // atributo privado
}
32
Sobrecarga de construtores
Class Circulo
{
public Circulo() // construtor padrão
{
raio=0;
}
public Circulo(int r) // construtor sobrecarregado
{
raio = r;
}
}
33
Métodos e dados static
34
Classes estáticas
35
Classes Anônimas
36
Backup
37
Download