Quem sou eu

- Blogue do Rafael
- Rio de Janeiro, RJ, Brazil
- Estudante do 8º periodo de Sistemas de Informação.
quarta-feira, 19 de janeiro de 2011
segunda-feira, 17 de janeiro de 2011
Cursos on-line 24 horas com Certificado
Cursos 24 horas com Certificado
Página Principal |
Quem Somos |
Lista de Cursos |
http://www.cursos24horas.com.br/parceiro.asp?cod=promocao29494&id=29805&url=cursos.asp |
Cadastro |
http://www.cursos24horas.com.br/parceiro.asp?cod=promocao29494&id=29805&url=cadastro.asp |
FAQ - Dúvidas |
http://www.cursos24horas.com.br/parceiro.asp?cod=promocao29494&id=29805&url=faq.asp |
Contato |
http://www.cursos24horas.com.br/parceiro.asp?cod=promocao29494&id=29805&url=contato.asp |
Tour Virtual |
http://www.cursos24horas.com.br/parceiro.asp?cod=promocao29494&id=29805&url=tour.asp |
Página com Brindes e Promoções |
http://www.cursos24horas.com.br/parceiro.asp?cod=promocao29494&id=29805&url=brindes-e-promocoes.asp |
10 Motivos para Estudar no Cursos 24 Horas |
http://www.cursos24horas.com.br/parceiro.asp?cod=promocao29494&id=29805&url=10motivos.asp |
Depoimentos de Alunos |
http://www.cursos24horas.com.br/parceiro.asp?cod=promocao29494&id=29805&url=depoimentos.asp |
Curso Aprenda a Falar em Público |
Curso Aprenda a Investir na Bolsa de Valores |
Curso da HP 12C |
Curso de Access 2007 |
Curso de Administração Contábil e Financeira |
Curso de Administração de Empresas |
Curso de Administração do Tempo |
Curso de ASP |
Curso de AutoCAD 2D |
Curso de AutoCAD 3D |
Curso de Chefia e Liderança |
Curso de Contabilidade Básica |
Curso de Corel Draw |
Curso de Departamento Pessoal |
Curso de Distúrbios de Aprendizagem |
Curso de Educação Ambiental |
Curso de Educação de Jovens e Adultos |
Curso de Educação Infantil |
Curso de Empreendedorismo |
Curso de Enfermagem |
Curso de Escrita e Redação |
Curso de Etiqueta Social e Empresarial |
Curso de Excel 2007 |
Curso de Flash |
Curso de Fotografia Digital |
Curso de Gestão da Qualidade |
Curso de Gestão Escolar |
Curso de Gestão Pública |
Curso de Guia de Turismo |
Curso de Jornalismo On-Line |
Curso de Linux |
Curso de Logística |
Curso de Marketing Pessoal |
Curso de Memorização e Leitura Dinâmica |
Curso de MS Project 2007 |
Curso de Negociação |
Curso de Photoshop |
Curso de Power Point 2007 |
Curso de Primeiros Socorros |
Curso de Propaganda e Marketing |
Curso de Qualidade de Vida no Trabalho |
Curso de Reciclagem e Energias Renováveis |
Curso de Recolocação Profissional |
Curso de Recrutamento e Seleção |
Curso de Redes e Noções de Hardware |
Curso de Secretariado Executivo |
Curso de Segurança do Trabalho |
Curso de Segurança na Internet |
Curso de Sucesso Profissional |
Curso de Técnicas de Vendas |
Curso de Telemarketing |
Curso de Webmaster |
Curso de Windows 7 |
Curso de Word 2007 |
Curso de Word e Excel |
Curso Noções Gerais de Direito |
segunda-feira, 10 de janeiro de 2011
sexta-feira, 7 de janeiro de 2011
Extra Novo
Maleta de Ferramentas Intech Machine - 129 Peças
De: R$ 129,00 Por: R$ 59,00
TV 32" LCD Samsung c/ Entradas HDMI e USB e Conversor Digital
De: R$ 1.499,00 Por: R$ 1.299,00
Conjunto de Panelas c/ Tampa de Vidro
De: R$ 169,90 Por: R$ 129,90
Navegador GPS c/ Tela 4,3" Touchscreen, PDI's em 3D e Orientação por Voz
De: R$ 499,00 Por: R$ 299,00
Baixa de preços HP.
Notebooks a partir de R$ 899,00!
Netbook HP Mini, 2GB, 160GB, LED 10,1" e Windows 7
De: R$ 1.299,00 Por: R$ 899,00
Micro System Philips c/ DVD
De: R$ 799,00 Por: R$ 649,00
Promoção câmeras digitais Canon
A partir de R$ 299
Máquina de Costura Janome + Tesoura Multiuso 7" Tramontina
De: R$ 249,00 Por: R$ 199,90
Circulador Britânia - 40cm
De: R$ 169,00 Por: R$ 149,00
Forno de Microondas - 17 L
De: R$ 299,00 Por: R$ 151,05
Lavadora de Roupas Brastemp 9 kg Ative!
De: R$ 1.399,00 Por: R$ 1.099,00
Fogão Continental 5 Bocas Grand Prix Passione
De: R$ 1.299,00 Por: R$ 959,00
Home Extra
todo o site com frete gratis !
Ilha inflável Intex Paraíso Lounge
De: R$ 399,90 Por: R$ 279,90
Colchão Inflável Casal Veludo Royal
De: R$ 69,90 Por: R$ 29,90
Cooler Anabell Budweiser p/ até 24 Latas
De: R$ 199,00 Por: R$ 149,00
Lava-Louças Electrolux
De: R$ 1.899,00 Por: R$ 1.499,00
Forno de Microondas Home Leader - 17 L
De: R$ 299,00 Por: R$ 159,00
Fogão Brastemp 6 Bocas Clean
De: R$ 1.299,00 Por: R$ 999,00
TV 42" LCD Full HD c/ Entradas HDMI e USB e Conversor Digital
De: R$ 2.199,00 Por: R$ 1.899,00
Conjunto de Ferramentas Importado c/ 98 Peças
De: R$ 44,00 Por: R$ 22,00
Blu-Ray Player 3D Samsung
De: R$ 799,00 Por: R$ 599,00
Purificador de Água Consul
De: R$ 449,90 Por: R$ 299,00
Ventilador Mondial Premium - 40cm
De: R$ 209,90 Por: R$ 139,90
De: R$ 129,00 Por: R$ 59,00
TV 32" LCD Samsung c/ Entradas HDMI e USB e Conversor Digital
De: R$ 1.499,00 Por: R$ 1.299,00
Conjunto de Panelas c/ Tampa de Vidro
De: R$ 169,90 Por: R$ 129,90
Navegador GPS c/ Tela 4,3" Touchscreen, PDI's em 3D e Orientação por Voz
De: R$ 499,00 Por: R$ 299,00
Baixa de preços HP.
Notebooks a partir de R$ 899,00!
Netbook HP Mini, 2GB, 160GB, LED 10,1" e Windows 7
De: R$ 1.299,00 Por: R$ 899,00
Micro System Philips c/ DVD
De: R$ 799,00 Por: R$ 649,00
Promoção câmeras digitais Canon
A partir de R$ 299
Máquina de Costura Janome + Tesoura Multiuso 7" Tramontina
De: R$ 249,00 Por: R$ 199,90
Circulador Britânia - 40cm
De: R$ 169,00 Por: R$ 149,00
Forno de Microondas - 17 L
De: R$ 299,00 Por: R$ 151,05
Lavadora de Roupas Brastemp 9 kg Ative!
De: R$ 1.399,00 Por: R$ 1.099,00
Fogão Continental 5 Bocas Grand Prix Passione
De: R$ 1.299,00 Por: R$ 959,00
Home Extra
todo o site com frete gratis !
Ilha inflável Intex Paraíso Lounge
De: R$ 399,90 Por: R$ 279,90
Colchão Inflável Casal Veludo Royal
De: R$ 69,90 Por: R$ 29,90
Cooler Anabell Budweiser p/ até 24 Latas
De: R$ 199,00 Por: R$ 149,00
Lava-Louças Electrolux
De: R$ 1.899,00 Por: R$ 1.499,00
Forno de Microondas Home Leader - 17 L
De: R$ 299,00 Por: R$ 159,00
Fogão Brastemp 6 Bocas Clean
De: R$ 1.299,00 Por: R$ 999,00
TV 42" LCD Full HD c/ Entradas HDMI e USB e Conversor Digital
De: R$ 2.199,00 Por: R$ 1.899,00
Conjunto de Ferramentas Importado c/ 98 Peças
De: R$ 44,00 Por: R$ 22,00
Blu-Ray Player 3D Samsung
De: R$ 799,00 Por: R$ 599,00
Purificador de Água Consul
De: R$ 449,90 Por: R$ 299,00
Ventilador Mondial Premium - 40cm
De: R$ 209,90 Por: R$ 139,90
quinta-feira, 6 de janeiro de 2011
Herança - Exemplo
Exemplo 1
// mostra acesso público, privado e protegido à classe-base
#include
using namespace std;
class Base
{
protected : int secreto;
private : int ultraSecreto;
public : int publico;
};
class Derivada1 : public Base
{
private:
int a, b, c;
public:
Derivada1( )
{
a = secreto; // ok
//b = ultraSecreto; // erro: não acessível
c = publico; // ok
}
};
class Derivada2 : private Base
{
private:
int a, b, c;
public:
Derivada2( )
{
a = secreto; // ok
//b = ultraSecreto; // erro: não acessível
c = publico; // ok
}
};
class Derivada3 : protected Base
{
private:
int a, b, c;
public:
Derivada3( )
{
a = secreto; // ok
//b = ultraSecreto; // erro: não acessível
c = publico; // ok
}
};
int main( )
{
int x;
Derivada1 obj1; // Derivada1 é pública
//x = obj1.secreto; // erro: não acessível
//x = obj1.ultraSecreto; // erro: não acessível
obj1.publico = 1; // ok
x = obj1.publico;
Derivada2 obj2; // Derivada2 é privada
//x = obj2.secreto; // erro: não acessível
//x = obj2.ultraSecreto; // erro: não acessível
//x = obj2.publico; // erro: não acessível
Derivada3 obj3; // Derivada3 é protegida
//x = obj3.secreto; // erro: não acessível
//x = obj3.ultraSecreto; // erro: não acessível
//x = obj3.publico; // erro: não acessível
cout << "x = obj1.publico: " << x << endl << endl;
system("pause");
return 0;
}
// mostra acesso público, privado e protegido à classe-base
#include
using namespace std;
class Base
{
protected : int secreto;
private : int ultraSecreto;
public : int publico;
};
class Derivada1 : public Base
{
private:
int a, b, c;
public:
Derivada1( )
{
a = secreto; // ok
//b = ultraSecreto; // erro: não acessível
c = publico; // ok
}
};
class Derivada2 : private Base
{
private:
int a, b, c;
public:
Derivada2( )
{
a = secreto; // ok
//b = ultraSecreto; // erro: não acessível
c = publico; // ok
}
};
class Derivada3 : protected Base
{
private:
int a, b, c;
public:
Derivada3( )
{
a = secreto; // ok
//b = ultraSecreto; // erro: não acessível
c = publico; // ok
}
};
int main( )
{
int x;
Derivada1 obj1; // Derivada1 é pública
//x = obj1.secreto; // erro: não acessível
//x = obj1.ultraSecreto; // erro: não acessível
obj1.publico = 1; // ok
x = obj1.publico;
Derivada2 obj2; // Derivada2 é privada
//x = obj2.secreto; // erro: não acessível
//x = obj2.ultraSecreto; // erro: não acessível
//x = obj2.publico; // erro: não acessível
Derivada3 obj3; // Derivada3 é protegida
//x = obj3.secreto; // erro: não acessível
//x = obj3.ultraSecreto; // erro: não acessível
//x = obj3.publico; // erro: não acessível
cout << "x = obj1.publico: " << x << endl << endl;
system("pause");
return 0;
}
Herança - Introdução
Introdução
• Herança
– Reusabilidade de software;
– Cria uma nova classe de uma classe existente.
• Absorve os dados e os comportamentos da classe
existente;
• Aprimora esses dados com novas capacidades;
– A classe derivada herda da classe básica.
• Classe derivada
– Grupo mais especializado de objetos;
– Contém comportamentos herdados da classe básica;
• Os quais podem ser personalizados;
– E outros comportamentos.
• Hierarquia de classes
– Classe básica direta
• É herdada explicitamente (de um nível acima da
hierarquia);
– Classe básica indireta
• É herdada de dois ou mais níveis da hierarquia;
– Herança simples
• Herda de uma classe básica;
– Herança múltipla
• Herda de múltiplas classes básicas;
– Classes básicas possivelmente não relacionadas.
• Três tipos de herança
class Agente : public BaseAgente
– public
• Os membros públicos da classe-base serão membros públicos da
classe derivada;
• Os membros protegidos da classe-base serão membros
protegidos da classe derivada;
• Assim, membros públicos da classe-base podem ser acessados
por um objeto da classe derivada;
class Agente : private Agente
– private
• Os membros públicos e protegidos da classe-base serão
membros privados da classe derivada;
• Esses membros estarão acessíveis aos da classe derivada, mas
um objeto da classe derivada não terá acesso a nenhum membro
da classe-base;
• Três tipos de herança
class Agente : protected BaseAgente
– protected
• Os membros públicos quanto os protegidos da classe-base
serão protegidos da classe derivada;
• Esses membros estarão disponíveis aos da classe derivada
e a classes herdadas desta;
• Um objeto da classe derivada não terá acesso a nenhum
membro da classe-base.
• Herança
– Reusabilidade de software;
– Cria uma nova classe de uma classe existente.
• Absorve os dados e os comportamentos da classe
existente;
• Aprimora esses dados com novas capacidades;
– A classe derivada herda da classe básica.
• Classe derivada
– Grupo mais especializado de objetos;
– Contém comportamentos herdados da classe básica;
• Os quais podem ser personalizados;
– E outros comportamentos.
• Hierarquia de classes
– Classe básica direta
• É herdada explicitamente (de um nível acima da
hierarquia);
– Classe básica indireta
• É herdada de dois ou mais níveis da hierarquia;
– Herança simples
• Herda de uma classe básica;
– Herança múltipla
• Herda de múltiplas classes básicas;
– Classes básicas possivelmente não relacionadas.
• Três tipos de herança
class Agente : public BaseAgente
– public
• Os membros públicos da classe-base serão membros públicos da
classe derivada;
• Os membros protegidos da classe-base serão membros
protegidos da classe derivada;
• Assim, membros públicos da classe-base podem ser acessados
por um objeto da classe derivada;
class Agente : private Agente
– private
• Os membros públicos e protegidos da classe-base serão
membros privados da classe derivada;
• Esses membros estarão acessíveis aos da classe derivada, mas
um objeto da classe derivada não terá acesso a nenhum membro
da classe-base;
• Três tipos de herança
class Agente : protected BaseAgente
– protected
• Os membros públicos quanto os protegidos da classe-base
serão protegidos da classe derivada;
• Esses membros estarão disponíveis aos da classe derivada
e a classes herdadas desta;
• Um objeto da classe derivada não terá acesso a nenhum
membro da classe-base.
quarta-feira, 5 de janeiro de 2011
Mensagem
4. MENSAGENS
Mensagens são requisições para que um objeto execute uma de suas ações. Cada objeto
somente pode responder às mensagens que constem do seu protocolo. O protocolo de um
objeto são as mensagens correspondentes as suas operações, além do protocolo de sua
superclasse.
Os objetos interagem através de mensagens.
O atendimento de uma mensagem envolve a execução de algum tipo de código, ou seja,
os métodos, sobre um dado associado àquela operação, ou seja, sobre os atributos.
Quando um objeto é criado, o acesso a suas características é feito através de
mensagens. Para cada mensagem recebida pelo objeto, existe um método associado para
respondê-la. Quando a mensagem estiver se referenciando a um atributo, o valor deste deve
ser devolvido, e no caso de uma operação, o procedimento desta é executado.
As operações podem ter parâmetros de entrada e saída com tipos determinados. Esta
característica, juntamente com o seu nome, definem a assinatura de uma mensagem.
Exemplo de mensagem, utilizando a classe fila:
seja a declaração de um objeto:
fila fila_atual;
.
.
.
A mensagem a este objeto seria:
__________________________________________________________________________________
___
fila_atual.get( );
Mensagens são requisições para que um objeto execute uma de suas ações. Cada objeto
somente pode responder às mensagens que constem do seu protocolo. O protocolo de um
objeto são as mensagens correspondentes as suas operações, além do protocolo de sua
superclasse.
Os objetos interagem através de mensagens.
O atendimento de uma mensagem envolve a execução de algum tipo de código, ou seja,
os métodos, sobre um dado associado àquela operação, ou seja, sobre os atributos.
Quando um objeto é criado, o acesso a suas características é feito através de
mensagens. Para cada mensagem recebida pelo objeto, existe um método associado para
respondê-la. Quando a mensagem estiver se referenciando a um atributo, o valor deste deve
ser devolvido, e no caso de uma operação, o procedimento desta é executado.
As operações podem ter parâmetros de entrada e saída com tipos determinados. Esta
característica, juntamente com o seu nome, definem a assinatura de uma mensagem.
Exemplo de mensagem, utilizando a classe fila:
seja a declaração de um objeto:
fila fila_atual;
.
.
.
A mensagem a este objeto seria:
__________________________________________________________________________________
___
fila_atual.get( );
Objetos
3. OBJETOS
O que caracteriza a programação orientada a objetos são os objetos. De um modo
geral podemos encarar os objetos como sendo os objetos físicos do mundo real, tal como:
carro, avião, cachorro, casa, telefone, computador, etc., por isso que às vezes é dito que
orientação a objetos representa os problemas mais próximo ao mundo real, dando assim mais
facilidade a programação como um todo, mais isso não é sempre verdade, porque às vezes
xtremamente funcionais1. Nesses problemas funcionais é difícil
temos problemas que são e
representar a estrutura lógica em torno de objetos. Com isso, não são todos os problemas que
giram em torno dos objetos facilmente visíveis.
De maneira simples, um objeto é uma entidade lógica que contém dados e código para
manipular esses dados. Os dados são denominados como sendo atributos do objeto, ou seja,
a estrutura que o objeto tem, e o código que o manipula denominamos método. Um método é
uma função que manipula a estrutura de dados do objeto.
Um objeto é um ente independente, composto por:
?? estado interno, uma memória interna em que valores podem ser armazenados e
modificados ao longo da vida do objeto.
?? comportamento, um conjunto de ações pré-definidas (métodos), através das quais o
objeto responderá a demanda de processamento por parte de outros objetos.
Por exemplo:
Uma tela de computador pode ter os seguintes atributos e métodos:
atributos
modo de operação /* texto/gráfico */
1
funcionais: gira em torno de processos
__________________________________________________________________________________
___
tamanho horizontal
tamanho vertical
paleta de cores
cor atual
métodos
modo texto ( )
modo gráfico ( )
fecha modo gráfico ( )
muda cor ( )
escreve caracter ( )
coloca pixel ( )
muda dimensões (x,y)
...
Um guarda-roupa:
estrutura
conjunto de roupas /* tipo, tamanho, cor, estilo, preço, etc. */
portas
número de portas
capacidade máxima
métodos
abre porta ( )
fecha porta ( )
escolhe roupa ( )
tira roupa ( )
coloca roupa ( )
estado do guarda-roupa ( ) /* portas abertas e fechadas, quantidade de roupas,
etc. */
...
Uma lista:
estrutura
(nodo e um apontador para um próximo nodo) Primeiro e atual
métodos
cria lista ( ) /* cria célula cabeça e inicializa */
próximo ( ) /*vai para o próximo elemento da lista */
insere ( ) /* insere um elemento na posição atual */
deleta ( ) /* apaga posição atual */
volta ao começo ( ) /* atual = primeiro */
...
__________________________________________________________________________________
___
Podemos notar que um objeto é composto por estrutura e processos, onde esses
processos giram em torno da estrutura, ao contrário das linguagens funcionais, nas quais a
estrutura se adapta a função. Um objeto só pode ser manipulado por sua estrutura e seus
métodos, nada mais do que isso.
Somente um objeto de um determinado tipo pode acessar seus métodos e estrutura, um
outro tipo de objeto não tem nenhum acesso a estes. Por exemplo, em uma classe cachorro
temos o método fala. Se por exemplo definirmos um objeto da classe gato, este objeto não
tem acesso nenhum ao método fala de cachorro.
Dentro de um objeto, alguns métodos e/ou estrutura podem ser privados ao objeto, o
que nos diz que são inacessíveis diretamente para qualquer elemento fora dele, o que impede
que outros objetos tenham acesso direto às partes privadas do objeto referenciado. Para o
objeto poder referenciar seus elementos privados ele deve passar pelos seus métodos, neste
caso um método específico que faça a operação desejada, ou seja, ele pode acessar sua
estrutura privada somente através de seus métodos, dando assim uma certa abstração de como
é feita a manipulação da estrutura. Isso consiste no encapsulamento de dados que será
explicado na seção referente a este tema. A princípio toda a estrutura deve ser privada, mas
algumas linguagens como C++ permitem que a estrutura de um objeto possa ser acessada
diretamente por outros objetos. Já em SmallTalk toda a estrutura é privada. Dessa maneira,
um objeto evita significativamente que algumas outras partes não relacionadas de programa
modifiquem ou usem incorretamente as partes privadas do objeto referenciado, dando assim
maior confiabilidade na manipulação do objeto. Isso tudo nos mostra uma característica muito
grande para construção de módulos independentes e abstração ao usuário.
Mais exatamente, cada objeto é uma instância de sua classe. É a classe que contém a
descrição da representação interna e dos métodos comuns a todas as suas instâncias
(objetos). Cada instância da classe, por sua vez, possui sua própria memória privativa (seu
estado interno) onde ficam armazenados os valores de seus componentes, que representam
suas características individuais. Associando com a linguagem C, uando v define uma
ocê
estrutura como por exemplo:
struct aluno {
char nome [30];
char telefone [20];
int número;
};
Quando você declara uma variável do tipo struct aluno você define uma instância da
estrutura aluno.
main ( ) {
struct aluno a; /* a é uma variável do tipo da estrutura aluno */
...
}
__________________________________________________________________________________
___
Agora quando define uma classe aluno
class Aluno {
char nome [30];
char telefone [20];
int número;
lista_notas notas;
...
public:
insereNota (matéria, nota);
listaNotas ( );
...
};
Definiremos uma variável aluno
void main ( ) {
Aluno João;
...
}
Neste caso João é uma variável (instância) do tipo aluno, o qual denominamos de
objeto, porque a classe aluno descreve uma estrutura que o caracteriza e métodos que o
manipulam.
Com isso podemos diferenciar claramente uma classe de objeto. A classe é apenas um
tipo de dado, que somente representa características comuns a determinados objetos. Uma
classe pode ser comparada com uma estrutura, com apenas uma forma definida, mas nenhuma
variável que a manipula. Para manipulá-las é preciso definir uma variável. Esta variável do tipo
da classe é que é chamada de objeto.
Os objetos de uma determinada classe não são iguais. Por exemplo, podemos ter os
objetos João e Pedro da classe Aluno, cada um vai ter um nome, telefone, número, notas, e
uma posição na memória. A sua similaridade consiste apenas no fato de que possuem
propriedades idênticas.
Uma coisa importante de um objeto é seu ciclo de vida, que engloba o momento em que
é declarado até sua eliminação. No instante em que um objeto é declarado, é alocado um
espaço em memória para ele e automaticamente executado seu construtor. A partir deste
momento o objeto está pronto para ser usado. Esta fase vai até a eliminação do objeto. A sua
eliminação pode ser de duas formas: a primeira, que todas as linguagens utilizam, elimina o
objeto no final do programa se ele for global, no final de um módulo se for local, e no final de
um bloco se for declarado dentro deste. A segunda forma de eliminação é chamada de
Garbage Collection. Esta maneira de eliminação não é implementada em todas as linguagens e
__________________________________________________________________________________
___
não é uma característica somente de orientação a objetos. Garbage Collection consiste em
eliminação pelo compilador do objeto/variável depois de sua última utilização. A partir do
momento em que ele não é mais referenciado, passa a não existir mais na memória. Por
exemplo, Garbage Collection é implementado em Lisp e SmallTalk enquanto que em C++ e
Pascal não. Quando o objeto é eliminado ele automaticamente executa seu destrutor.
Em programação orientada a objetos, primeiramente o que deve ser identificado são os
objetos que o problema requer (até mesmo os tipos simples de dados são vistos como objetos,
porque têm estrutura e operações (métodos) que o manipulam). Por exemplo um objeto inteiro
é comparado com outro, recebe uma atribuição, tem operações aritméticas. Esta nova
concepção não é tão fácil de ser encarada, principalmente para quem já é experiente em
programação imperativa. As principais dificuldades a princípio são a identificação dos objetos,
e o tratamento do problema somente através de objetos.
O que caracteriza a programação orientada a objetos são os objetos. De um modo
geral podemos encarar os objetos como sendo os objetos físicos do mundo real, tal como:
carro, avião, cachorro, casa, telefone, computador, etc., por isso que às vezes é dito que
orientação a objetos representa os problemas mais próximo ao mundo real, dando assim mais
facilidade a programação como um todo, mais isso não é sempre verdade, porque às vezes
xtremamente funcionais1. Nesses problemas funcionais é difícil
temos problemas que são e
representar a estrutura lógica em torno de objetos. Com isso, não são todos os problemas que
giram em torno dos objetos facilmente visíveis.
De maneira simples, um objeto é uma entidade lógica que contém dados e código para
manipular esses dados. Os dados são denominados como sendo atributos do objeto, ou seja,
a estrutura que o objeto tem, e o código que o manipula denominamos método. Um método é
uma função que manipula a estrutura de dados do objeto.
Um objeto é um ente independente, composto por:
?? estado interno, uma memória interna em que valores podem ser armazenados e
modificados ao longo da vida do objeto.
?? comportamento, um conjunto de ações pré-definidas (métodos), através das quais o
objeto responderá a demanda de processamento por parte de outros objetos.
Por exemplo:
Uma tela de computador pode ter os seguintes atributos e métodos:
atributos
modo de operação /* texto/gráfico */
1
funcionais: gira em torno de processos
__________________________________________________________________________________
___
tamanho horizontal
tamanho vertical
paleta de cores
cor atual
métodos
modo texto ( )
modo gráfico ( )
fecha modo gráfico ( )
muda cor ( )
escreve caracter ( )
coloca pixel ( )
muda dimensões (x,y)
...
Um guarda-roupa:
estrutura
conjunto de roupas /* tipo, tamanho, cor, estilo, preço, etc. */
portas
número de portas
capacidade máxima
métodos
abre porta ( )
fecha porta ( )
escolhe roupa ( )
tira roupa ( )
coloca roupa ( )
estado do guarda-roupa ( ) /* portas abertas e fechadas, quantidade de roupas,
etc. */
...
Uma lista:
estrutura
(nodo e um apontador para um próximo nodo) Primeiro e atual
métodos
cria lista ( ) /* cria célula cabeça e inicializa */
próximo ( ) /*vai para o próximo elemento da lista */
insere ( ) /* insere um elemento na posição atual */
deleta ( ) /* apaga posição atual */
volta ao começo ( ) /* atual = primeiro */
...
__________________________________________________________________________________
___
Podemos notar que um objeto é composto por estrutura e processos, onde esses
processos giram em torno da estrutura, ao contrário das linguagens funcionais, nas quais a
estrutura se adapta a função. Um objeto só pode ser manipulado por sua estrutura e seus
métodos, nada mais do que isso.
Somente um objeto de um determinado tipo pode acessar seus métodos e estrutura, um
outro tipo de objeto não tem nenhum acesso a estes. Por exemplo, em uma classe cachorro
temos o método fala. Se por exemplo definirmos um objeto da classe gato, este objeto não
tem acesso nenhum ao método fala de cachorro.
Dentro de um objeto, alguns métodos e/ou estrutura podem ser privados ao objeto, o
que nos diz que são inacessíveis diretamente para qualquer elemento fora dele, o que impede
que outros objetos tenham acesso direto às partes privadas do objeto referenciado. Para o
objeto poder referenciar seus elementos privados ele deve passar pelos seus métodos, neste
caso um método específico que faça a operação desejada, ou seja, ele pode acessar sua
estrutura privada somente através de seus métodos, dando assim uma certa abstração de como
é feita a manipulação da estrutura. Isso consiste no encapsulamento de dados que será
explicado na seção referente a este tema. A princípio toda a estrutura deve ser privada, mas
algumas linguagens como C++ permitem que a estrutura de um objeto possa ser acessada
diretamente por outros objetos. Já em SmallTalk toda a estrutura é privada. Dessa maneira,
um objeto evita significativamente que algumas outras partes não relacionadas de programa
modifiquem ou usem incorretamente as partes privadas do objeto referenciado, dando assim
maior confiabilidade na manipulação do objeto. Isso tudo nos mostra uma característica muito
grande para construção de módulos independentes e abstração ao usuário.
Mais exatamente, cada objeto é uma instância de sua classe. É a classe que contém a
descrição da representação interna e dos métodos comuns a todas as suas instâncias
(objetos). Cada instância da classe, por sua vez, possui sua própria memória privativa (seu
estado interno) onde ficam armazenados os valores de seus componentes, que representam
suas características individuais. Associando com a linguagem C, uando v define uma
ocê
estrutura como por exemplo:
struct aluno {
char nome [30];
char telefone [20];
int número;
};
Quando você declara uma variável do tipo struct aluno você define uma instância da
estrutura aluno.
main ( ) {
struct aluno a; /* a é uma variável do tipo da estrutura aluno */
...
}
__________________________________________________________________________________
___
Agora quando define uma classe aluno
class Aluno {
char nome [30];
char telefone [20];
int número;
lista_notas notas;
...
public:
insereNota (matéria, nota);
listaNotas ( );
...
};
Definiremos uma variável aluno
void main ( ) {
Aluno João;
...
}
Neste caso João é uma variável (instância) do tipo aluno, o qual denominamos de
objeto, porque a classe aluno descreve uma estrutura que o caracteriza e métodos que o
manipulam.
Com isso podemos diferenciar claramente uma classe de objeto. A classe é apenas um
tipo de dado, que somente representa características comuns a determinados objetos. Uma
classe pode ser comparada com uma estrutura, com apenas uma forma definida, mas nenhuma
variável que a manipula. Para manipulá-las é preciso definir uma variável. Esta variável do tipo
da classe é que é chamada de objeto.
Os objetos de uma determinada classe não são iguais. Por exemplo, podemos ter os
objetos João e Pedro da classe Aluno, cada um vai ter um nome, telefone, número, notas, e
uma posição na memória. A sua similaridade consiste apenas no fato de que possuem
propriedades idênticas.
Uma coisa importante de um objeto é seu ciclo de vida, que engloba o momento em que
é declarado até sua eliminação. No instante em que um objeto é declarado, é alocado um
espaço em memória para ele e automaticamente executado seu construtor. A partir deste
momento o objeto está pronto para ser usado. Esta fase vai até a eliminação do objeto. A sua
eliminação pode ser de duas formas: a primeira, que todas as linguagens utilizam, elimina o
objeto no final do programa se ele for global, no final de um módulo se for local, e no final de
um bloco se for declarado dentro deste. A segunda forma de eliminação é chamada de
Garbage Collection. Esta maneira de eliminação não é implementada em todas as linguagens e
__________________________________________________________________________________
___
não é uma característica somente de orientação a objetos. Garbage Collection consiste em
eliminação pelo compilador do objeto/variável depois de sua última utilização. A partir do
momento em que ele não é mais referenciado, passa a não existir mais na memória. Por
exemplo, Garbage Collection é implementado em Lisp e SmallTalk enquanto que em C++ e
Pascal não. Quando o objeto é eliminado ele automaticamente executa seu destrutor.
Em programação orientada a objetos, primeiramente o que deve ser identificado são os
objetos que o problema requer (até mesmo os tipos simples de dados são vistos como objetos,
porque têm estrutura e operações (métodos) que o manipulam). Por exemplo um objeto inteiro
é comparado com outro, recebe uma atribuição, tem operações aritméticas. Esta nova
concepção não é tão fácil de ser encarada, principalmente para quem já é experiente em
programação imperativa. As principais dificuldades a princípio são a identificação dos objetos,
e o tratamento do problema somente através de objetos.
Assinar:
Postagens (Atom)
Arquivo do blog
-
▼
2011
(62)
-
▼
janeiro
(62)
- Cursos on-line 24 horas com Certificado
- Cursos on-line 24 horas com Certificado
- Cobra Tecnologia – 3,7 mil vagas
- Click Banner
- Eucomparo
- UM MILHÃO DE VISITAS EM SEU SITE!!
- QUER TER UM MILHÃO DE ACESSOS EM SEU SITE OU BLOG??
- Mala Pronta Novo
- Lojas KD
- Jamster Novo
- Imperdível Novo
- Extra Novo
- Empregos Novo
- Empregos Novo
- Editora Europa Novo
- Desejo Mania Novo
- Herança - Exemplo
- Herança - Introdução
- Linkk no Seu Blog
- Click Banner
- Mensagem
- Objetos
- Classes, Métodos e Atributos
- Introdução - POO
- Ponto Frio Novo
- Pra Bebe Novo
- Safari Shop Novo
- Sepha Novo
- Templo Zen Novo
- Tripular Novo
- Viajanet2 Novo
- Viajanet Novo
- Vitalipo Novo
- Walmart Novo
- Nova publicação
- Quer ganhar dinheiro com seu site??
- Cursos 24 horas (Vídeo)
- Cursos 24 horas com Certificado
- Cursos On-line 24 horas
- Walmart
- Vitalipo
- Viajanet2
- Viajanet
- Tripular
- Templo Zen
- Sepha
- Safari Shop
- Pra Bebe
- Ponto Frio
- Polishop
- Mala Pronta
- Le France
- Jamster
- Imperdível
- Glamour
- Extra
- Empregos
- Editora Europa
- Desejo Mania
- Clickon
- Brands Club
- Agencia Voxel
-
▼
janeiro
(62)