Академический Документы
Профессиональный Документы
Культура Документы
Programao Estruturada
Vamos abordar neste artigo qual tipo de programao
deve ser utilizada no decorrer do desenvolvimento:
orientada a objetos ou programao estruturada.
(11)
(0)
Vamos abordar neste artigo os dois tipos de programao bem conhecidos e que ainda
geram algumas dvidas em suas utilizaes e definies, que a programao
orientada a objetos e a programao estruturada.
Existem dois tipos de programao bem usuais: Orientada a Objetos (OO) e
Estruturada. Em cada uma delas iremos conhecer os seus principais conceitos e suas
respectivas utilizaes e, por fim, mostraremos um breve comparativo entre esses dois
tipos e qual o melhor a ser utilizado quando um projeto de desenvolvimento de software
for iniciado. Utilizaremos como linguagem de programao base para os nossos
exemplos as linguagens Java e C#.
Quer aprender mais sobre Orientao a objetos em Java? Confira o curso de Java
bsico orientado a objetos da DevMedia.
meuCarro.marca = Fiat;
meuCarro.modelo = Palio;
meuCarro.ano = 2013;
meuCarro.categoria = Passeio;
meuCarro.potencia = 86.7;
meuCarro.autonomia = 320.6;
meuCarro.ligado = false;
}
eliminado e, por conveno, utilizado tambm o mesmo nome da classe, porm com
um ~ antecedendo o nome como, por exemplo, para a classe Carro temos o destrutor
~Carro().
Agora que j conhecemos um pouco sobre orientao a objetos, vamos conhecer seus
princpios bsicos
Abstrao
Este princpio uma forma de abstrair o quo complexo um mtodo ou rotina de um
sistema, ou seja, o usurio no necessita saber todos os detalhes de como sua
implementao foi realizada, apenas para que serve determinada rotina e qual o
resultado esperado da mesma. Sendo assim, podemos tambm dividir internamente
problemas complexos em problemas menores, onde resolvemos cada um deles at
encontrarmos a soluo do problema inteiro. Um exemplo da vida real para ilustrar esse
conceito seria o conceito de carro a abstrao de um veculo, que utilizado como meio
de transporte por vrias pessoas para mover-se de um ponto a outro. No necessrio
que a pessoa informe que ir se locomover com a ajuda de um veculo movido a
combustvel, contendo rodas e motor. Basta a pessoa informar que utilizar um carro
para tal, pois esse objeto conhecido por todos e abstrai toda essa informao por trs
disso.
Veja na Listagem 5 um exemplo de abstrao utilizando a linguagem Java.
Listagem 5. Exemplo de abstrao
public class Conta {
int cod_banco;
int num_conta;
double saldo;
double limite;
void ConsultarSaldo() {
System.out.println(Conta: + this.num_conta);
System.out.println(Saldo: + this.saldo);
}
void Depositar(double valor) {
this.saldo = this.saldo + valor;
}
void Sacar(double valor) {
this.saldo = this.saldo - valor;
}
}
Para este caso, um cliente s precisa entender que uma conta um local, em um
determinado banco, onde possvel ser depositado e sacado valores.Para exemplificar
este caso, criamos uma classe Conta com os atributos: cdigo do banco, nmero da
conta, saldo e limite. Criamos tambm um mtodo ConsultarSaldo, onde ele retorna
qual o saldo da conta naquele momento. Criamos tambm outro mtodo chamado
Depositar onde passamos um valor como parmetro e ele soma esse ao saldo atual da
conta. Outro mtodo chamado Sacar foi criado com um valor passado por parmetro,
onde o mesmo subtrai esse valor do saldo atual da conta.
Encapsulamento
O princpio do encapsulamento a forma pela qual o programa divido a ponto de se
tornar o mais isolado possvel, ou seja, cada mtodo pode ser executado isoladamente e
retornar um resultado satisfatrio ou no para cada situao. Sendo assim, o objeto no
necessita conhecer qual forma cada mtodo foi implementado.
Vejamos na Listagem 6 um exemplo prtico de encapsulamento, onde possvel obter e
atribuir valores a propriedades da classe Pessoa de forma independente, sem alterar o
funcionamento do restante da classe.
Listagem 6. Exemplo de encapsulamento
public class Pessoa {
private String nome; // Define o nome da pessoa
private String cpf; // Define o cpf da pessoa
private Date dat_nasc; // Define a data de nascimento da pessoa
// Obtem o nome da pessoa
public String getNome() {
return nome;
}
// Atribui o nome a pessoa
public void setNome(String nome) {
this.nome = nome;
}
// Obtem o cpf da pessoa
public String getCpf() {
return cpf;
}
// Atribui o cpf a pessoa
public void setCpf(String cpf) {
this.cpf = cpf;
}
// Obtem a data de nascimento da pessoa
public Date getDatNasc() {
return dat_nasc;
}
Herana
Esse princpio diz que, uma classe pode compartilhar mtodos e atributos entre si como,
por exemplo, em um sistema escolar, onde temos uma classe Pessoa que contm
caractersticas que definem uma pessoa. Porm, dentro do sistema temos uma outra
classe Funcionrio, que contm os mesmos atributos de Pessoa, alm de outros atributos
que apenas funcionrios podem ter. Outro exemplo seria uma classe Aluno, que tambm
contm atributos de pessoas e outros atributos que apenas pertencem a aluno.
Vejamos na Listagem 7 como podemos implementar esse princpio utilizando a
linguagem de programao Java.
Listagem 7. Implementando o princpio da herana
public class
public
public
public
pessoa
Pessoa {
String nome; // Define o nome da pessoa
String cpf; // Define o cpf da pessoa
Date data_nascimento; // Define a data de nascimento da
Note que temos uma classe Pessoa que contm propriedades em comum com as classes
Aluno, Professor e Funcionrio. Essas outras classes que herdam de Pessoa recebem a
palavra reservada extends, que indica que as mesmas contm as propriedades nome,
cpf e data, presentes na classe Pessoa.
Polimorfismo
Polimorfismo uma caracterstica na qual os mesmos atributos ou mtodos podem ser
utilizados por objetos distintos e com implementaes de lgica diferentes. Por
exemplo, podemos dizer que um carro e uma bicicleta so veculos utilizados para
locomoo e ambos contm um mtodo Andar em comum, porm, a implementao
de cada um deles feita de forma diferente.
Vamos exemplificar a implementao de uma classe Forma, onde a mesma contm um
mtodo Desenhar, como mostra a Listagem 8.
Listagem 8. Classe Forma
public abstract class Forma
{
public Forma()
{
}
Note que a classe Forma uma classe abstrata e que o mtodo desenhar no tem
implementao, pois cada figura tem uma forma diferente de ser desenhada. Porm,
nas classes derivadas da classe Forma que esse mtodo ser implementado e, por isso,
essa nova classe ser uma classe virtual, como mostra a Listagem 9.
Listagem 9. Classe Circulo
using System.Drawing;
public class Circulo : Forma
{
// Implementa o mtodo desenhar baseado na forma Circulo
public override void Desenhar(System.Drawing.Graphics g)
{
base.Desenhar (g);
g.DrawEllipse(Pens.Red, 5, 5, 100, 100);
}
}
Veja agora que a classe Circulo herda da classe Forma, portanto o mtodo Desenhar
deve ser implementado. Partindo desse princpio podemos ter diversas classe diferentes
que herdem da classe Forma e implementem de outra forma o mtodo Desenhar, como
mostra a Listagem 10.
Listagem 10. Classe Quadrado
public class Quadrado : Forma
{
Programao Estruturada
O princpio bsico da programao estruturada que um programa pode ser divido
em trs partes que se interligam: sequncia, seleo e iterao.
Sequncia
Na sequncia so implementados os passos de processamento necessrios para
descrever determinada funcionalidade. Um exemplo bsico seria um fluxograma, onde
primeiro executado a Etapa 1 e aps a sua concluso a Etapa 2 executada, e assim
por diante.
Seleo
Na seleo o fluxo a ser percorrido depende de uma escolha. Existem duas formas
bsicas para essa escolha.
Iterao
Na iterao permito a execuo de instrues de forma repetida, onde ao fim de cada
execuo a condio reavaliada e enquanto seja verdadeira a execuo de parte do
programa continua.
Modularizao
A medida que o sistema vai tomando propores maiores, mais vivel que o mesmo
comece a ser divido em partes menores, onde possvel simplificar uma parte do cdigo
deixando a compreenso mais clara e simplificada. Essa tcnica ficou conhecida como
Subprogramao ou Modularizao. No desenvolvimento utilizamos essa tcnica
atravs de procedimentos, funes, mtodos, rotinas e uma srie de outras estruturas.
Com essa diviso do programa em partes podemos extrair algumas vantagens, como:
Programao estruturada
Mtodos
Procedimentos e funes
Instncias de variveis
Variveis
Mensagens
Classes
Herana
No disponvel
Polimorfismo
No disponvel