Ah cara não entendi o exercicio eu quebrei todo meu liquidificador e não entendi ;D (Brincadeira)
Em que linguagem de programação voce estaria falando? ;D
Ah cara não entendi o exercicio eu quebrei todo meu liquidificador e não entendi ;D (Brincadeira)
Em que linguagem de programação voce estaria falando? ;D
Orientação a Objetos é uma metodologia (ou um paradigma) alheio à linguagem de programação (não totalmente, a linguagem precisa dar suporte a essa metodologia...)
Quando entrarmos na parte da programação (e não apenas conceito da OO), entretanto, usarei Java para me auxiliar a ensinar.
Então sim, quem fizer essas aulas aprenderá a programar o básico do básico em Java (já que Java é totalmente orientado a objetos).
U.u eu estou aprendendo a programar em Java acho que isso vai me ajudar ;O
Espero mais topicos sobre isso eu fiz uma coisa em java aqui ;P
import java.awt.*;import java.lang.*;
import java.awt.event.*;
import java.applet.Applet;
import java.awt.datatransfer.*;
/* Programa Desenvolvido By Zafor */
public class Calculadora extends Applet
{
}
class calf extends Frame implements WindowListener, ActionListener, KeyListener
{
String command, copy, arg, chg, txt;
double result;
String number = "123456789.0";
String operator = "/*-+=";
CopyPaste cp;
Menu Menu1;
MenuBar Menubar1;
MenuItem menuitem1, menuitem2, menuitem3;
TextField entrytext;
Button numbut []; //Botoes de Numero
Button combut []; //Botoes de Comando
Panel companel, numpanel;
public static void main(String[] arguments)
{
calf calWindow = new calf("Calculadora em Java By Zafor");
calWindow.setSize(238, 255);
calWindow.setVisible(true);
}
public calf(String title)
{
super(title);
addWindowListener(this);
addKeyListener(this);
cp = new CopyPaste();
setBackground(Color.lightGray);
setLayout(new GridLayout(1, 1));
Menubar1 = new MenuBar();
Menu1 = new Menu("Editar");
menuitem1 = new MenuItem("Copiar");
Menu1.add(menuitem1);
menuitem1.addActionListener(this);
menuitem2 = new MenuItem("Colar");
Menu1.add(menuitem2);
menuitem2.addActionListener(this);
menuitem3 = new MenuItem("Sair");
Menu1.add(menuitem3);
menuitem3.addActionListener(this);
Menubar1.add(Menu1);
setMenuBar(Menubar1);
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints constraints = new GridBagConstraints();
setLayout(gridbag);
constraints.weighty = 1;
constraints.weightx = 1;
Font bigFont = new Font("Tahoma",Font.TRUETYPE_FONT, 18);
entrytext = new TextField(20);
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(entrytext,constraints);
add(entrytext);
entrytext.setFont(bigFont);
entrytext.setEditable(false);
entrytext.setForeground(Color.black);
entrytext.setBackground(Color.white);
entrytext.addKeyListener(this);
entrytext.requestFocus();
constraints.weighty = 1;
constraints.weightx = 1;
companel = new Panel();
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(companel,constraints);
/*
Comandos
* Reiniciar
* Sair
* Voltar
*/
companel.setLayout(new GridLayout(1,3,5,5));
// Criar os Botões
Font comsFont = new Font("Tahoma",Font.ROMAN_BASELINE, 12);
String[] coms = { "Reiniciar","Sair","Voltar"
};
combut = new Button[3];
for (int i=0; i<=2; i++)
{
combut = new Button(coms);
companel.add(combut);
combut.addActionListener(this);
combut.setFont(comsFont);
combut.addKeyListener(this);
}
add(companel);
companel.addKeyListener(this);
constraints.weighty = 1;
constraints.weightx = 6;
numpanel = new Panel();
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(numpanel,constraints);
/*
Botoes
*/
numpanel.setLayout(new GridLayout(5,4,4,2));
// Para Criar os Botões
String[] nums = { "7","8","9","/",
"4","5","6","sqrt",
"1","2","3","*",
"%","0","-","1/x",
"+/-",".","+","="
};
numbut = new Button[20];
for (int i=0; i<=19; i++)
{
numbut = new Button(nums);
numpanel.add(numbut);
numbut.addActionListener(this);
numbut.addKeyListener(this);
if(operator.indexOf(nums) > -1)
{
numbut.setForeground(Color.black);
}
else
{
numbut.setForeground(Color.black);
}
}
add(numpanel);
numpanel.addKeyListener(this);
command = "+";
copy = "";
chg = "N";
txt = "";
arg = "";
result = 0;
}
public void actionPerformed(ActionEvent e)
{
if (e.getActionCommand() == "Sair")
{
setVisible(false);
System.exit(0);
}
else if (e.getActionCommand() == "Copiar")
{
String txt = entrytext.getText();
if (txt != null)
{
cp.doCopy(txt);
}
}
else if (e.getActionCommand() == "Colar")
{
cp.doPaste();
if (cp.ctxt != null)
{
entrytext.setText(cp.ctxt);
}
}
else if (e.getActionCommand() == "Voltar") back_space();
else if (e.getActionCommand() == "Reiniciar") entrytext.setText("");
else if (e.getActionCommand() == "C")
{
result = 0;
command = "+";
entrytext.setText("");
}
else
{
arg = e.getActionCommand();
txt = entrytext.getText();
if(number.indexOf(arg) > -1)
{
if (chg == "Y") txt = "";
txt = txt + arg;
entrytext.setText(txt);
chg = "N";
}
else check_entry();
}
}
public void keyPressed(KeyEvent k){}
public void keyReleased(KeyEvent k)
{
int ikey = k.getKeyCode();
if (ikey == 127) entrytext.setText("");
}
public void keyTyped(KeyEvent k)
{
int ikey = k.getKeyChar();
if (ikey == 8) back_space();
else if (ikey == 10)
{
arg = "=";
txt = entrytext.getText();
display_ans();
}
else
{
txt = entrytext.getText();
char ckey = (char) ikey;
arg = String.valueOf(ckey);
if(number.indexOf(arg) > -1)
{
if (chg == "Y") txt = "";
txt = txt + arg;
entrytext.setText(txt);
chg = "N";
}
else check_entry();
}
}
public void back_space()
{
txt = entrytext.getText();
int l = txt.length();
if (l > 0)
{
txt = txt.substring(0,l-1);
entrytext.setText(txt);
}
}
public void display_ans()
{
entrytext.setText(compute_tot(txt,command));
chg = "Y";
command = "+";
result = 0;
}
public void check_entry()
{
if(arg.equals("=")) display_ans();
else if(arg.equals("%"))
{
entrytext.setText(compute_tot(txt,arg));
chg = "Y";
}
else if(operator.indexOf(arg) > -1)
{
entrytext.setText(compute_tot(txt,command));
command = arg;
chg = "Y";
}
else if(arg == "sqrt")
{
entrytext.setText(compute_tot(txt,arg));
chg = "Y";
command = "";
}
else if(arg == "+/-")
{
Double tnum = Double.valueOf(txt);
double num = tnum.doubleValue();
num = num * -1;
entrytext.setText(String.valueOf(num));
chg = "Y";
}
else if(arg == "1/x")
{
entrytext.setText(compute_tot(txt,arg));
chg = "Y";
}
}
String compute_tot(String t, String c)
{
Double tnum = Double.valueOf(t);
double num = tnum.doubleValue();
if (c.equals("+")) result = result + num;
else if (c.equals("-")) result = result - num;
else if (c.equals("*")) result = result * num;
else if (c.equals("/")) result = result / num;
else if (c.equals("%")) result = num / 100;
else if (c.equals("+/-")) result = num * -1;
else if (c.equals("1/x")) result = 1.000 / num;
else if (c.equals("sqrt")) result = Math.sqrt(num);
return String.valueOf(result);
}
public void windowClosing(WindowEvent we)
{
setVisible(false);
System.exit(0);
}
public void windowClosed(WindowEvent we) {}
public void windowDeiconified(WindowEvent we) {}
public void windowIconified(WindowEvent we) {}
public void windowOpened(WindowEvent we) {}
public void windowActivated(WindowEvent we) {}
public void windowDeactivated(WindowEvent we) {}
}
class CopyPaste implements ClipboardOwner
{
Clipboard clip;
String ctxt;
CopyPaste()
{
clip = new Clipboard("clip");
ctxt = null;
}
void doCopy(String txt)
{
StringSelection trans = new StringSelection(txt);
clip.setContents(trans, this);
}
void doPaste()
{
ctxt = null;
Transferable toPaste = clip.getContents(this);
if (toPaste != null)
{
try
{
ctxt = (String)toPaste.getTransferData(
DataFlavor.stringFlavor);
}
catch (Exception e)
{
System.out.println("Error -- " + e.toString());
}
}
}
public void lostOwnership(Clipboard clip,
Transferable contents) {
}
}
É uma calculadora em Java eu peguei o programa de uma pessoa traduzi ele adicionei os botões,menu modifiquei o fundo e etc... se voce tiver alguma dica eu aceitarei ;D
Pow cara... eu acho que você quis dizer que era pra escrever um algoritmo (frases curtas e objetivas) tendo apenas um verbo em cada frase, respeitando uma ordem, um formato ou um padrão de linguagem de programação.
:smile_positivo:
@zafor
Enquanto uma calculadora em java(oop) tem 200 linhas, uma em C(que não é oop) tem umas 50 linhas no max.. ![]()
Eu acho oop dispensavel em maioria dos casos.. Maas, a moda pegou, então fazer o que, nada contra a maré é burrice!
obs:
não liguem pra mim, para se entender maioria dos codes atuais é necessario ter ao menos uma báse de oop
info
Grupo: Conde
Registrado: 23/12/07
Posts: 566
Reputação: +5
Char no Tibia: Tprocheira soldier

Pelo amor de deus, será que o XTibia possue só usuários crianças?
Depois esse infelizes (tipo o Zafor) reclamam que não existem tutoriais!
O usuário VaL veio tentar ensinar como se programar (assim que se começa), e se vocês continuarem seguindo esse tutorial, é provável que vocês sejam grandes programadores.
Aprovado :button_ok:
\\
info
Grupo: Conde
Registrado: 18/12/05
Posts: 912
Reputação: +86
Gênero: Masculino
Char no Tibia: Kohzete

Hehe belo tuto
Tomare que a comunidade se interesse
@eventide
Ah eu prefiro Java tbm...
Como é multi plataforma gere eh melhor
E um programador java ganha bem mais que um c ou c++
info
Grupo: Marquês
Registrado: 01/03/06
Posts: 1k
Reputação: +38
Gênero: Masculino

Eu prefiro C/C++, mas sei ambos ;z
As linguagens de programação são muito repetitivas, depois que você aprende uma bem, você estuda outra em no máximo 3 meses você já está programando muito bem, sabendo muita coisa da linguagem ;z
Pelo amor de deus, será que o XTibia possue só usuários crianças?Depois esse infelizes (tipo o Zafor) reclamam que não existem tutoriais!
O usuário VaL veio tentar ensinar como se programar (assim que se começa), e se vocês continuarem seguindo esse tutorial, é provável que vocês sejam grandes programadores.
Aprovado :button_ok:
\\
Não vi ninguem fazendo comentario infantil no tópico, só você...
e quanto ao programador java ganhar bastante,
se for deve ser porque é multi plataforma, mas eu não gosto de java, não pelo fato de ser oop, e sim porque pra se rodar algo com ele precisa do programa deles e porque aplicativos java são super pesados..
Editado Fevereiro 22 por Eventide
info
Grupo: Conde
Registrado: 06/11/06
Posts: 850
Reputação: +6
Char no Tibia: Xearius Thor

Lindo tutorial parabéns,
movido.
@Zafor
Acho que tá bem completa sua calculadora.
Se quiser incrementá-la, abre a do Windows e vai copiando funções =]
info
Grupo: Visconde
Registrado: 25/05/08
Posts: 1.4k
Reputação: +26
Char no Tibia: Akhumura

Orientação a objetos...
Já estudei isso em Delphi ![]()
Sobre o tutorial...Precisa falar alguma coisa?
Está ótimo, impecável, se não se interessarem, é porque realmente não merecem :_:
info
Grupo: Visconde
Registrado: 11/01/06
Posts: 300
Reputação: +9
Char no Tibia: Lippisch

Eventide,
A OO é ótima na implementação de grandes sistemas, usando grandes equipes e torna a manutenção muito mais fácil.
eu aprendi POO no site criarweb ahuhauahuahuah na teoria ficou 'um pouco' confuso, aí dps que eles apresentaram a teoria em códigos (PHP) aí clareou... eh axo q tb sou nerd =P
as 'funções' dos objetos, também podem ser chamadas de métodos =)
achei super interessante o tutorial, mas achei que faltou frisar que todo objeto pertence à uma classe.... que é o ponto máximo na hierarquia da POO
classe flores {
propriedade nome
propriedade cor
método fotossíntese
}
classe carro {
propriedade marca
propriedade modelo
propriedade ano
proprieadade motor
método acelerar
método frear
}
aí com quando se definem as classes, é possível criar os objetos =)
info
Grupo: Visconde
Registrado: 10/03/06
Posts: 366
Reputação: +29
Orientação a Objetos
Aula 1
Inícios dos conceitos de Orientação a Objetos
Apresentação
Olá!
Nesse cantinho do fórum XTibia eu vou ministrar, para quem se interessar a ler, aulas (ou tutoriais) de programação orientada a objetos.
Não ensinarei como programar; o básico de lógica de programação, blocos e comandos, procedimentos e afins você já deve saber.
Antes de começar, talvez seja melhor eu me apresentar:
Meu nome é Diogo Dias Barreiros, tenho 21 anos e estou atualmente cursando o curso de Bacharelado em Sistemas de Informação no CES/JF.
Tenho alguma experiência no campo da programação, principalmente quando diz respeito a PHP, linguagem que programo a mais de 6 anos.
Conheci a orientação a objetos em 2008 e logo gostei, pois mesmo quando utilizava a metodologia de programação estruturada, já estruturava meus sistemas de forma semelhante ao que a OO prega.
Bom, chega, vamos ao que interessa.
O que é Orientação a Objetos
Essa é simples, orientação a objetos é a vida real; na verdade, talvez fosse até mais realista usar o termo "orientação à vida" na computação, ou "é tão difícil viver nesse programa orientado a objetos" quando estivéssemos nos referindo ao mundo. Sim, eu sou nerd, mas isso não vem ao caso agora.
A orientação a objetos poderia ter surgido da observação da natureza. O observador perceberia, olhando para uma flor, que ela pode ser dividida em partes menores, como uma folha, e que essas partes menores têm características e comportamento próprio, como a cor da folha e respiração.
As partes menores interligadas, formariam o objeto maior chamado flor, que teria suas características, como nível de beleza e suas funções, como embelezar o ambiente, que poderiam ou não ser diretamente ligadas aos objetos menores, como pétala, folha, caule e afins.
Percebe?
Quando estamos criando, por exemplo, nosso primeiro programa estruturado, a menos que tenhamos sido instruídos para tal, dificilmente pensaríamos em pensar em dividir nosso programa em "características" e "funções". Apenas colocamos um monte de estruturas uma abaixo a outra, ou dividida em arquivos, mas sem uma separação clara do que cada coisa faz, sem definir de forma perfeita o motivo daquilo que está naquele arquivo fazer o que faz por outro motivo que não seja "porque eu quero que seja assim".
E se cada um faz o que quer, porque quer, da forma que quer, sem se preocupar em organizar as coisas de forma padronizada, ou padronizando como quiser, infeliz daquele que realizará a manuntenção nesse código. A menos que saiba qual o padrão utilizado, seria uma loucura, por mais bem organizado que as coisas estejam.
Existem, por exemplo, empresas que utilizam linguagens estruturadas na criação de seus programas que no "manual de normas" definem que cada chamada ao banco de dados deve ser feita em uma função/procedimento. Dessa forma, todos sabem onde procurar quando querem encontrar uma chamada ao banco de dados... ou não.
Um código poluído, onde há mistura de funções e estrutura lógica do programa, é o terror de qualquer programador.
E já estamos começando a formar um conceito:
E pronto. Isso é a orientação a objetos, ao menos o conceito geral.
Lembra-se do exemplo da flor?
Vamos para um exemplo simples de um carro:
Tenho um carro.
Nesse carro tenho um motor.
Esse motor tem propriedades/características próprias, como fabricante e potência, e funções próprias, como queimar combustível para transformá-lo em movimento.
Voltando ao carro, ele tem também suas propriedades, como modelo e cor, e suas funções, como acelerar e freiar.
Mas pera ae? Não é o motor que faz o carro acelerar a partir da queima do combustível e os freios que fazem o carro parar?
Sim, mas o motor fora de uma estrutura não iria para lugar nenhum, um freio sozinho não serveria para nada, um capô sozinho é apenas um pedaço de metal... As funções dos objetos menores presentes em um objeto maior podem também serem as funções desse objeto maior.
Mas acho que estou complicando um pouco demais agora, vamos parar por aqui e deixar sua cabecinha assimilar esse conceito.
---
Exercícios
1. Desmembre o objeto "liquidificador" em pelo menos uma outra parte e diga suas respectivas propriedades e funções (ao menos uma).
Obs.: Escrever, como fiz acima, não utilizar nenhuma linguagem de programação para isso (caso saiba alguma).
2. Faça o mesmo que o exercício 1 com dois outros objetos à sua escolha.
Exemplos de respostas
1.
Objeto: Liquidificador
Outra parte: Copo
Copo
Propriedade: Material (plástico ou metal)
Função: Receber algo que será batido (conter algo)
Liquidificador
Propriedade: Cor
Função: Processar alimentos
2.
Objeto: Tênis
Partes: Cadarço e sola
Sola
Propriedade: Grau de conservação (se está gasta ou não)
Função: Diminuir o atrito que o pé sentirá
Cadarço
Propriedade: Amarrado (pode ou não estar amarrado)
Função: Ajudar a impedir o tênis de sair do pé
Tênis
Propriedade: Estilo (esporte, etc)
Função: Proteger os pés
Editado Abril 10 por Diogo
Modificar formatação visual do tópico