quinta-feira, 2 de agosto de 2012

Referências Bibliográficas

DAVID,  Marcio Frayse, Guia do Hardware.  Disponível em:<http://www.hardware.com.br/artigos/programacao-orientada-objetos/> Acessado em 31/07/12.

GUDWIN, Ricardo R. Linguagens de Programação Mini e Microcomputadores: Software. Disponível em:

CAMILO, Márcio da Silva, Sir Mac Stronger. Disponível em:

quarta-feira, 1 de agosto de 2012

Finalidade do Blog

O blog foi criado com a finalidade de informar sobre Linguagens Orientadas a Objeto; irá conter os seguintes tópicos:
  • O que é Linguagens Orientadas a Objeto,
  • Para que serve,
  • Como funciona,
  • Exemplos de linguagens que se enquadram nesse paradigma,
  • Exemplos de programas dessa linguagem.
O blog tem como autoras: Alessandra Reis, Helen Fabrine, Isabella Macedo, Késsia Coutinho e Valéria Chaves (Grupo 6 da matéria de Introdução ao Algoritmo Estruturado), com o incentivo do professor Cláudio Rodolfo Sousa de Oliveira.

O que é Linguagens Orientadas a Objeto...

       A Programação Orientada a Objetos (POO) é uma forma especial de programar, mais próximo de como expressaríamos as coisas na vida real do que outros tipos de programação. É também uma outra visão de como programar. Quando for pensar na estrutura e lógica do programa, você não vai pensar apenas em quais váriaveis você vai ter, e quais funções você vai aplicar nelas. Você deverá pensar em quais os objetos que formam seu programa. Você decide o que é o objeto. Num cadastro de uma faculdade, seus objetos podem ser alunos, professores e matérias, por exemplo. Você escolhe quantos objetos terá, de forma que facilite na sua implementação.
      
       Na POO o programador é responsável por moldar o mundo dos objetos, e explicar para estes objetos como eles devem interagir entre si. Os objetos "conversam" uns com os outros através do envio de mensagens, e o papel principal do programador é especificar quais serão as mensagens que cada objeto pode receber, e também qual a ação que aquele objeto deve realizar ao receber aquela mensagem em específico.

Cada objeto seu será uma classe (que você pode pensar como um Record do Pascal ou Struct de C). Entretanto, você não vai apenas declarar quais são as váriaveis que farão parte de sua record (ou Struct). Você dirá também quais são as funções que podem ser aplicadas nesse objeto (essas funções que são declaradas dentro da classe são chamadas de métodos). Seus métodos só poderão ser aplicados nos objetos aos quais eles pertencem.
Ou seja, a partir de agora você não vai dividir seu programa apenas em funções, você vai dividi-lo em objetos (classes pra ser mais específica … um objeto é uma instância de uma classe). Essa pequena mudança parece mínima, e talvez de pouca valia, mas faz muita diferença.
Uma linguagem considerada orientada a objetos também deve proporcionar modificadores de acesso (para facilitar encapsulamento de dados e depuração), herança (facilita a legibilidade do código e facilita o reuso dele). Pode também oferecer sobrecarga, polimorfismo, entre outras facilidades.
Em suma, a principal vantagem é que com orientação a objetos é muito mais fácil organizar o teu programa.

Para que serve a Linguagem Orientada a Objetos?

       A POO (Programação Orientada a Objetos) foi criada para tentar aproximar o mundo real do mundo virtual: a idéia fundamental é tentar simular o mundo real dentro do computador. Para isso, nada mais natural do que utilizar Objetos, afinal, nosso mundo é composto de objetos.

      Em alguns contextos, prefere-se usar modelagem orientada ao objeto, em vez de programação.

       A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de objetos para descrever um sistema de software. O funcionamento deste sistema se dá através do relacionamento e troca de mensagens entre estes objetos.

      Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definidos nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.

Como funciona a POO


      Um objeto é mais do que apenas uma variável ou uma estrutura, e uma classe é mais do que um tipo.
CLASSES


     Uma classe é uma estrutura que abstrai um conjunto de objetos com características similares. Uma classe define o comportamento de seus objetos - através de métodos - e os estados possíveis destes objetos - através de atributos.
     Em outras palavras, uma classe descreve os serviços oferecidos por seus objetos e quais informações eles podem armazenar.
   Classes não são diretamente suportadas em todas as linguagens, e são necessárias para que uma linguagem seja orientada a objetos.
    Uma classe representa um conjunto de objetos com características afins. Uma classe define o comportamento dos objetos através de seus métodos, e quais estados ele é capaz de manter através de seus atributos.

Como funciona a POO (Parte 2)

Atributos e métodos são a forma, orientada a objetos, de manipular os objetos de uma classe.
     Os Atributos são os elementos que definem a estrutura de uma Classe. Os atributos também são conhecidos como variáveis de classe, e podem ser divididos em dois tipos básicos: atributos de instância e de classe. Os valores dos atributos de instância determinam o estado de cada objeto. Um atributo de classe possui um estado que é compartilhado por todos os objetos de uma classe. Atributos de classe podem ser chamados também de atributos estáticos ou constantes.
     As mensagens enviadas a um objeto (métodos, ver abaixo) podem mudar o valor de um ou mais atributos, alterando o estado de um objeto.
     Um atributo é um dado para o qual cada objecto tem seu próprio valor.
    Atributos são, basicamente, a estrutura de dados que vai representar a classe.

Exemplo com javascript



<html>
<head>
   <script language="javascript">
      function alerta(){
         //Recuperando valores de atributos com o método "getAttribute"
         alert(document.form.texto.getAttribute("a_atrib"));
      }
   </script>
</head>
<body>
<form name="form">
   <!--Neste caso, "a_atrib" é um atributo criado pelo programador, 
       e "name" é um atributo nativo do html-->
      <input type="text" name="texto" id="texto" a_atrib="valor
 do atributo">
      <input type="button" name="bto" onClick="alerta();" value="Ok">
</body>
</form>
</html>

Como funciona a POO (Parte 3)

MÉTODO

      Um método é uma subrotina que é executada por um objeto ao receber uma mensagem. Os métodos determinam o comportamento dos objetos de uma classe e são análogos a funções ou procedimentos da programação estruturada. 
     O envio de mensagens (chamada de métodos) pode alterar o estado de um objeto.

Como funciona a POO (Parte 4)

OBJETOS
       Um objeto, na vida real, é qualquer coisa a qual pudermos dar um nome.
Um objeto, em programação orientada a objetos, é uma instância (ou seja, um exemplar) de uma classe. A Wikilivros é um exemplo de Wiki, ou, a Wikilivros é uma instância de Wiki. Isto poderia ser representado em um programa orientado a objetos com uma classe chamada Wiki e um objeto do tipo Wiki chamado Wikilivros.
       Um objeto é capaz de armazenar estados através de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos.
      Atributos são características de um objeto. Basicamente a estrutura de dados que vai representar a classe.
       Exemplos: um objeto da classe "Funcionário" teria como atributos "nome", "endereço", "telefone", "CPF", etc
      O conjunto de valores dos atributos de um determinado objeto é chamado de estado.

Exemplos de linguagens que se enquadram nesse paradigma

     A primeira linguagem de programação a incorporar conceitos de programação a objetos foi a linguagem SIMULA na década de 1960. A linguagem SMALTALK totalmente orientada a objetos foi criada na década de 1970. Na década de 1980 linguagens clássicas passaram a contar com implementações de Orientação a Objetos tornando-se linguagens híbridas como C++ e o Object Pascal. Ainda no final da década de 1980 e início de 1990 a linguagem JAVA, que é completamente orientada a objetos, foi concebida.


      Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definido nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos. C++, C, VB.NET, Java,Object Pascal, Objective-C, Python, SuperCollider, Ruby e Smalltalk são exemplos de linguagens de programação orientadas a objetos.

Exemplos de programas dessa linguagem

     Vejamos agora um pequeno exemplo de programa que utiliza Orientação a Objetos. Vamos criar a classe Pessoa da qual se derivarão as classes cliente e empregado. Depois instanciaremos cada uma destas classes filhas e as preencheremos e imprimeremos utilizando seus métodos.
#include<stdio.h>
#include<string.h>
class Pessoa {
private:
char Nome[31];
char CPF[12];
public:
void EntraNome (char *);
void EntraCPF (char *);
char * SaiNome(void);
char *SaiCPF(void);
virtual void ImprimeDados() =0;
};
class Cliente: public Pessoa{
private:
int NCadCliente;
public:
Cliente (char*, char*,int);
void ImprimeDados(void);
};
class Empregado: public Pessoa{
private:
int NCadEmpregado;
public:
Empregado (char*, char*,int);
void ImprimeDados(void);
};
void Pessoa::EntraNome(char *nome){
strcpy(Nome, nome);
}
void Pessoa::EntraCPF(char *cpf){
strcpy(CPF, cpf);
}
char * Pessoa::SaiNome(void){
return (Nome);
}
char * Pessoa::SaiCPF(void){
return (CPF);
}
Cliente::Cliente(char *nome, char *cpf, int codcli){
EntraNome(nome);
EntraCPF(cpf);
NCadCliente = codcli;
}
Empregado::Empregado(char *nome, char *cpf, int codemp){
EntraNome(nome);
EntraCPF(cpf);
NCadEmpregado = codemp;
}
void Cliente::ImprimeDados (void) {
printf("\nNome: %s\nCPF: %s\nCódigo: %d", SaiNome(), SaiCPF(), NCadCliente);
}
void Empregado::ImprimeDados (void){
printf("\nNome: %s\nCPF: %s\nCódigo: %d", SaiNome(), SaiCPF(), NCadEmpregado);
}
void main (void) {
Cliente cli1("José", "12345678910", 1);
Empregado emp1 ("Rita", "01987654321", 1);
cli1.ImprimeDados();
emp1.ImprimeDados();
}