27 setembro 2009

6- Propriedades de POO: HERANÇA

Propriedade dos objetos que permite a criação de uma herança entre eles, onde os descendentes herdam o código e estruturas dos seus ancestrais. Quando uma classe herda da outra, a subclasse herda da superclasse.
Em java, diz que a superclasse é mais generalizada e a sub-classe é mais específica. É dito que a sub-classe estende a superclasse. Um relacionamento de herança significa que a sub-classe herdará os membros da superclasses.
A Sub-classe pode:
Adicionar novos atributos
Adicionar novos métodos
Sobrepor um método existente
A principal vantagem da herança em L.O.O. está na reutilização do código. Em java, usa-se a palavra "extends".
Exemplo:
//arquivo Pessoa.java
public class Pessoa {
String nome;
int idade;
public Pessoa(String nome, int idade){
this.nome = nome;
this.idade = idade;
}
public String imprimir(){
return("\nMeu nome é:"+nome+"e minha idade é:"+idade);
}
}
//arquivo Aluno.java
public class Aluno extends Pessoa {
double mediafinal;
public Aluno(String nome1, int idade1, double media){
super(nome1, idade1);
mediafinal = media;
}
public String retornaMedia(){
return("Sou aluno da UFERSA e minha média final foi:"+mediafinal);
}
}
//arquivo Funcionario.java
public class Funcionario extends Pessoa {
int matricula;
double salario;
public Funcionario(String nome1, int idade1, int mat, double sal){
super(nome1, idade1);
matricula = mat;
salario = sal;
}
public String retornaFrase(){
return("\nSou funcionário da UFERSA e me nome é:"+nome);
}
}
//arquivo Teste_Heranca.java
public class Teste_Heranca {
public static void main(String[] args) {
Pessoa p1 = new Pessoa ("maria", 40);
Funcionario f1 = new Funcionario ("Jose", 45, 003, 250);
Aluno a1 = new Aluno("Ana", 21, 9.5);
System.out.println(p1.imprimir());
System.out.println(f1.imprimir());
System.out.println(f1.retornaFrase());
System.out.println(a1.imprimir());
System.out.println(a1.retornaMedia());
}
}
A palavra super referencia a classe da qual se originou. Sendo assim, "super.aumetaSalario" invoca o método aumentaSalario da superclasse. Herança Simples: Um objeto herda as características de uma única classe. Uma subclasse tem somente uma superclasse.
Exemplo:

//arquivo empregado.java
class empregado{
String nome, secao;
double salario;
public empregado(String n, String s, double sal){
nome = n;
secao = s;
salario = sal;
}
public void aumentaSalario(double percentual){
salario = salario + salario*(percentual/100);
}
}
//arquivo gerente.java
class gerente extends empregado{
String secretaria;
public gerente(String n, String s, double sal, String sec){
super.aumentaSalario(porcentagem)+200;
}
}
//arquivo pessoa.java
class pessoa{
String nome, data_nascimento;
char sexo;
...
}
//arquivo professor.java
public class professor extends pessoa{
String contato, email;
...
}
//arquivo aluno.java
public class aluno extends pessoa{
String matricula;
...
}

Herança Múltipla: Quando uma subclasse herda características de mais de uma classe.
Java não suporta implementação de herança múltipla
Leia mais...

18 setembro 2009

5- Construtores e Destrutores em Java.


Construtores e Destrutores.
Construtores: Todo objeto tem seu tempo de vida que engloba desde o momento que ele é declarado até a sua "eliminação". No instante que o objeto é declarado, é alocado um espaço na memória pra ele. A partir desse momento, o objeto está pronto pra ser usado.
Em Java, é necessário um mecanismo que "construa" objetos a partir de uma classe, o construtor.Os construtores servem pra criar objetos de uma classe. Para usar o construtor deve-se usa a palavra new. Construtores são métodos que possuem o mesmo nome da classe.
Ex:.

Class teste{
String nome, telefone;
int idade;
void aniversario(){
idade = idade+1;
}
}

Para criar construtores e criar objetos pertencentes à classe teste, faz o seguinte:
Exemplo de construtor sem parâmetros:

teste(){
}

Exemplo de construtor com parâmetros:

teste(String nome1, int idade1, String telefone1){
nome = nome1;
idade = idade1;
telefone = telefone1;
}

Na classe principal para criar objetos da classe teste:

teste amigo1 = new teste();
teste amigo2 = new teste("João");
teste amigo3 = new teste("João",32,"3322-3311");

Vejamos um exemplo completo:

class curso{
String nome;
int creditos;
public curso(String nomeCurso,int qntCreditos){
nome = nomeCurso;
creditos = qntCreditos;
}
}

public class principal{
public static void main(String args[]){
curso c1 = new curso("Informática Básica",30);
curso c2 = new curso("Estrutura de Dados",45);
System.out.println(c1.nome);
System.out.println(c2.nome);
System.out.println(c2.creditos);
}
}

Geralmente os construtores aparecem entre os atributos e os métodos.
Destrutores: Algumas Linguagens de programação precisam "eliminar"o objeto criado. Java usa o Garbage Colector(coletor de lixo), que elimina os objetos não utilizados na memória.
Quando o objeto é eliminado, ele automaticamente executa seu destrutor.
Leia mais...

2- Iniciando com o C++ na programação estruturada.


Aqui nós usaremos a linguagem C++, que além de ser uma linguagem orientada a objeto tbm pode ser usada como uma linguagem genérica e estruturada. Esse é o ponto onde queremos chegar.
Sabemos que um programa é um conjunto de códigos que formam funções a serem executadas pelo computador. Vamos ver agora como se estruturam esses códigos em c++.

Comentários:
São importantes para explicar o que acontece em determinado local do programa. As linhas de comentário não serão executadas pelo programa.
Para fazer um comentário em uma única linha em c++ usamos "//".
Para fazer um comentário contendo mais que uma linha usa-se /* no início e */ no fim.

Pré-processador:
Um pré-processador é um programa que processa (modifica) o código fonte antes da compilação.
O pré-processador trata as diretivas que iniciam com o símbolo #. A diretiva #include adiciona o conteúdo de um arquivo ao código fonte do programa.
O arquivo iostream contém várias definições para as funções de entrada e saída de dados:

i = input (entrada)
o = output (saída)
stream = fluxo (canal)

Programas que usam cin e cout para entrada e saída de dados devem incluir o arquivo iostream.

Namespaces:
É um recurso que permite combinar códigos existentes de diferentes fornecedores.
Ao incluir iostream em um programa é preciso acrescentar a seguinte diretiva: using namespace std;
Isto permite usar as funções cin e cout sem a designação do espaço de nome a qual elas pertencem.
utilização sem a diretiva using.

std::cout << "Bem vindo ao C++.";

Se duas empresas desenvolverem uma função cout, elas o farão sob diferentes namespaces.
Microflop::cout() – função cout da Microflop
Wanda::cout() – função cout da Wanda
Para usar todas as funções da Microflop:
using namespace Microflop;

Saída de dados:
A função cout exibe dados na tela. É um objeto predefinido que sabe como mostrar strings, números e caracteres.

A estrutura do cout é a seguinte:
cout << "Mensagem";
cout //nome do objeto.
<< //Operador que indica a direção do fluxo de informações.
"Mensagem" //mensagem a ser exibida na tela.

Entrada de dados:
A função cin recebe dados do teclado a serem usados no programa.
A estrutura do cin é a seguinte:
cin >> variavel;
cin //nome do objeto.
>> //Operador que indica a direção do fluxo de informações.
variavel //Onde o valor será guardado.

A função principal:
Estrutura:
Cabeçalho da função "int main()"
Corpo da função que se inicia com { e termina com }
Instruções, onde vão ficar todas as ações da função principal
Instrução de retorno "return 0"

O ponto e vírgula:
No c++, cada instrução é encerrada por um ponto e vírgula ";", isso avisa ao programa que uma instrução foi encerrada.

#include <iostream>//Uma diretiva de pré-processamento, inclui funções de entrada e saída(cin, cout).
int main() //Cabeçalho da função principal.
{
using namespace std; //Torna definições cin e cout visíveis.
cout << "Bem vindo ao C++."; //Imprime mensagem na tela.
cout << endl; //Inicia uma nova linha, mesma função do \n.
cout << "Meu primeiro programa!" << endl; //Mais saída de dados.
system ("pause"); //Espera pelo pressionamento de uma tecla.
return 0; //A função deve retornar algum valor.
} //Finaliza a função main().

O C++ é Case sensitive, isto é, diferencia maiúsculas de minúsculas.
Portanto, deve-se prestar atenção a como se digita o código fonte.
Ex:
Para dados de saída(impressão de algo na tela) se usa cout, e não Cout.
Assim como para dados de entrada se usa cin, e não Cin.
Leia mais...

08 setembro 2009

1- Introdução à Programação Estruturada.

Computadores são aparelhos eletrônicos capazes de executar uma enorme diversidade de tarefas, tais como:
  • Solução de problemas aritméticos. 
  • Controle de processos industriais. 
  • Execução remota de cirurgia. 
  • Previsão de condições climáticas. 
  • Controle acadêmico de uma universidade. 
  • Controle de robôs. 
  • Controle e execução de jogos e simulações. 
Como um mesmo dispositivo eletrônico executa trabalhos de natureza tão diversas?
  • Um telefone faz e atende chamadas de voz. 
  • Um aparelho de DVD reproduz filmes. 
  • Um microondas cozinha alimentos. 
Ao contrário da maioria dos dispositivos eletrônicos, o computador pode ser programado para executar qualquer tarefa. Como programar um computador para fazer o que queremos? Criando um programa! Um programa é uma entidade pela qual se consegue instruir o computador a realizar uma tarefa. Um programa funciona como uma receita para se fazer um bolo, uma seqüência de instruções que, ao serem executadas pelo computador, realizam uma determinada tarefa.

Ingredientes/Dados
1 xícara de açúcar
1 colher de fermento em pó
½ xícara de chocolate em pó
2 xícaras de farinha de trigo
1 xícara de leite
5 ovos 

Preparo/Algoritmo
Bata as claras em neve bem firme Junte as gemas e acrescente o açúcar
Despeje o leite sem parar de bater
Adicione farinha, chocolate e fermento
Despeje em uma fôrma redonda untada Leve para assar em forno por 40 minutos
Deixe esfriar e corte-o ao meio.

Como criar um programa? 

O computador não reconhece a linguagem natural utilizada na receita de bolo, ele só executa instruções em linguagem de máquina. Ex:. {calcula a soma 10 + 20} asm mov eax,10 add eax, 20 end; A linguagem de máquina é uma linguagem de baixo nível que manipula as informações no nível de registradores da CPU e endereços de memória. As linguagens de máquinas são complexas para a programação de grandes sistemas. Nos dias de hoje utilizam-se linguagens de alto nível que serão traduzidas para a linguagem de máquina através de um compilador. Exemplos de linguagens de alto nível: Pascal, C, C++, Java, Ocaml... 

O que é necessário saber para programar em uma linguagem de alto nível? 
  • Aprender a linguagem:
    • Representação de dados 
    • Instruções de entrada/saída de dados 
    • Instruções de controle (desvio) 
    • Instruções de repetição 
    • Criação de blocos de Instruções 
  • Aprender a usar um tradutor (compilador) da linguagem.
Leia mais...

4- Primeiros programas em Java

Um exemplo muito simples de um programa em Java é o clássico Hello World, veja o exemplo abaixo. 



public class helloWorld{
     public static void main(String[] args){
     System.out.println("Hello World!");
     }
}


O programa acima irá imprimir a frase 'Hello World!' na tela.



Vamos analisar as linhas do programa:


public class helloWorld{ //cria uma classe chamada helloWorld

public static void main(String[] args){ //essa linha especifica que essa classe é a principal. 
System.out.println("Hello World!"); // imprime a mensagem na tela. 
} //fecha a classe principal. 
} //fecha a classe helloWorld.

Perceba que em algumas linhas há algumas palavras que começam com letra maiúscula. Isso porque o Java é Case-Sensitive, ou seja diferencia maiúscula de minúscula. Em algumas palavras é necessário que as iniciais sejam maiúsculas, caso contrário, o programa não irá rodar.


Agora vejamos um exemplo que importe um pacote:

import javax.swing.JoptionPane;
public class caixa{
     public static void main(String[] args){
     JoptionPane.showMessageDialog(null, "Hello World!");
     }
}



import javax.swing.JoptionPane; //importa a classe que trabalha com janelas.
JoptionPane.showMessageDialog(null, "Hello World!"); //imprime 'Hello World!' em uma janela.


Outros programas:

Import java.util.Scanner;
public class operacoes{
                public static void main(String args[]){
                Scanner x = new Scanner(System.in); 
                int a, b;
                System.out.println(“Digite um número: “);
                a = x.nextInt(); 
                System.out.println(“Digite outro número: “); 
                b = x.nextInt(); 
                System.out.printf(“%d + %d = %d”, a, b, (a + b)); 
               System.out.printf(“%d - %d = %d”, a, b, (a -+ b)); 
               System.out.printf(“%d * %d = %d”, a, b, (a * b));   
               System.out.printf(“%d / %d = %d”, a, b, (a / b)); 
               System.out.printf(“%d / %d = %6.2f”, a, b, ((float)a/b)); 
               } 
}



import java.util.Scanner; public class teste{
                public static void main(String args[]){
                Scanner x = new Scanner(System.in);
                int a, b;
                System.out.printf(“Entre com o primeiro número: ”);
                a = x.nextInt();
                System.out.printf(“Entre com o Segundo número: ”);
                b = x.nextInt();
                if(a > b)
                               System.out.println(“O primeiro é maior.”);
                else
                               System.out.printf(“O Segundo é maior. ”);
               
}

}
Leia mais...

07 setembro 2009

3- A linguagem Java.

Java é uma linguagem de programação orientada a objeto desenvolvida pela sun. Os programas em java consistem de um programa principal e um conjunto de classes.


A plataforma java possui dois componentes:

  • JVM(Java Virtual Machine): máquina virtual que executa as instruções escritas em java. O compilador java transforma o programa em bytecodes. Os bytecodes são intruções da máqina reconhecidas pela JVM.
  • API(Aplication Programming Interface): API's do java são coleções de classes existentes nas bibliotecas do java. São classes com estruturas para manipular arquivos, construir aplicativos gráficos entre outros.

Fases de um programa java.


  • Criação do programa: Edição do arquivo em um editor de texto(código fonte). Deve salvar com a extensão .java.
  • Compilação do programa: o compilador converte o programa java para bytecodes, salvando-o com a extensão .class.
  • Carga do programa para a memória: o class é carregado para a memória contendo todos os bytecodes do programa principal.
  • Verificação dos bytescodes: verificação se todos os bytecodes são válidos.
  • Execução: A JVM executa os bytecodes verificados realizando as instruções do programa.


IDE's são os programas que utilizamos para editar esses códigos, compilar e executar o programa.


Pacotes em java.
Um pacote em java é um conjunto de classes agrupadas, a biblioteca do java inclui vários pacotes cada um contendo classes fortemente relacionadas.

  • JAVA.AWT: contém classes definir interfaces gráficas. Ex:. JAVA.AWT.COLOR(classes que suportam cores).
  • JAVA.NET: classe de suporte à utilização de internet.
  • JAVA.APPLET: permite a criação de applets.
  • JAVA.SQL: interpretação e java com banco de dados.

Os pacotes são instalados no diretório padrão do java, mas existem classes que prescisam serem importadas.
Leia mais...

06 setembro 2009

2- Entendendo a POO.

No outro post vimos que a POO é baseada no conceito dos objetos, neste post veremos como ela funciona.
Classes em POO: Pode ser dita como um conjunto de objetos, temos em mente na vida real que classes são conjuntos de elementos de um mesmo exemplar. Uma classe pode conte um ou mais objetos e é um ponto fundamental a se entender neste tipo de programação.
Exemplo de uma classe:
Classe carro:
marca:
ano:
cor:  métodos: 
A classe carro como podemos ver, pode possuir elementos(objetos) com os atributos marca, ano e cor.
Objetos em POO: Objetos podem ser entendidos como instancia (exemplar) de uma classe. Os objetos pertencentes a uma mesma classe terão os mesmos atributos. Mas o valor real de cada objeto pode ou não ser diferente.
Exemplo de um objeto:
celta
chevrolet
2003
azul
andar, parar, estacionar.
Analise a seguir mais um objeto da classe carro:
corsa
chevrolet
2009
prata
andar, parar, estacionar.
Veja que o objeto corsa possui os mesmos atributos que o objeto celta, isso porque eles pertencem a uma mesma classe. Percebemos também que os valores atribuídos são diferentes, mas mesmo se possuíssem os mesmos valores, eles seriam objetos à parte.
Conceitos importantes:
Tipos de dados: especifica qual será o tipo de dado daquela classe: int x; char y; float z;
Estado: conjunto de valores de todos os atributos que definem um objeto(posição x, posição y, diâmetro, cor, etc...). O estado é representado ao armazenar valores nos atributos.
Parâmetros: algumas vezes o método requer algum parâmetro de entrada.
Ex:.
void soma(int x, int y)
{
z = x + y;
}

Valores de retorno: os métodos podem retornar algum valor para um outro método.
Ex:.
void soma(int x, int y)
{
z = x + y;
return z;
}

Leia mais...

1- Introdução à Programação Orientada à Objeto

O Computador

Computador é um conjunto de componentes responsável por automatizar tarefas, diminuindo o esforço humano com muito mais velocidade. Os computadores manipulam valores em contas bancárias, cadastram alunos, realizam cálculos complexos, armazenam grande número de informações e nos entretêm com jogos e informações multimídia. O que faz os computadores realizarem todas essas tarefas são os softwares ou programas.

O que são programas?

Os programas dizem o que o computador deve fazer com seu hardware, ou seja, são conjuntos de comandos e regras definidos em uma determinada linguagem que o programador deve conhecer para poder manipular os recursos do computador.

Os programas são constituídos de código (fonte) e necessitam de um compilador para traduzir a linguagem de programação de alto nível para que possa ser traduzida em uma linguagem de baixo nível, assim o programa será entendido pelo computador.

Níveis de linguagem de programação.

Linguagem de alto nível: linguagem que se aproxima da forma de comunicação do ser humano.

Ex: Java, Pascal, C/C++, FORTRAN.

Linguagem de nível médio: nível intermediário entre as linguagens de baixo nível e de alto nível. São chamados Mnemônicos.

Ex: Assembly.

Linguagem de baixo nível: código que o computador executa diretamente, e é composta de 0 e 1. É a conhecida linguagem binária.

Gerações de LP.

1ª Geração: linguagem de máquina.

0010 0010
0001 0010
1000 1100

2ª Geração:  linguagem de nível intermediário(Assembly).

ADD x
STO y
DIV z

3ª Geração: linguagem de alto nível.

x=(D+A)/Y

4ª Geração: o "que" no lugar do "como".

insira o valor X na coluna Y da tabela Z

5ª Geração: processamento das linguagens naturais.

interpretação da fala

Razões para se estudar linguagens de programação.
  • Maior capacidade de resolver soluções computacionais para problemas da vida real.
  • Habilidade em desenvolver programas cada vez melhores e mais inteligentes.
  • Melhor capacidade de escolher uma linguagem de programação apropriada.
  • Maior facilidade de aprender outras linguagens de programação.
  • Ter a capacidade de projetar outras linguagens de programação.

Paradigmas da programação.

Programação estruturada:

Possibilidade de solucionar problemas relativamente complexos de maneira razoável, entretanto, quando o projeto atinge certo tamanho torna-se difícil e custoso efetuar uma manutenção e fazer qualquer modificação.

Características:

  • Programas com início, meio e fim.
  • Uso intenso de loops e condições.
  • Chamadas de funções.
  • Ex:. C, Pascal, Cobol, FORTRAN


Programação orientada a objetos:

A POO aproveitou as vantagens da programação estruturada e combinou com novos conceitos.

Características:

  • Programas compostos por objetos ao invés de listas de instruções.
  • Programas orientados a objetos são mais fáceis de entender  e compreender.


Comparação entre eles:

Programação Estruturada: listas de instruções.

Estrutura de dados + Função = Programa

POO: baseada no conceito dos objetos.

Estrutura de dados + Função = Objeto
Objeto(1) + Objeto(2) + ... + Objeto(n) = Programa
Leia mais...