Jump to content
Yamix

Simular Objetos/Re-uso de Código?

Recommended Posts

Yamix

É possível simular (ou imitar) objetos no Pascal bordland?

Pensei em criar um tipo de dado registro que guardaria os atributos, por exemplo, de um carro e após isso criar os métodos para ele, mesmo que fossem globais.

É possivel fazer o re-uso de código também? Eu creio que sim, mas seria talvez, meio que uma gambiarra..

Desculpa-me por fazer essas perguntas assim.. Estou farto dos meus colegas de faculdade tratarem Pascal como se não fosse nada e Java como se fosse mil maravilhas.. o engraçado é que nunca programaram uma linha em Pascal e querem dar opnião.. típico de programador Java.. Isso que acontece, quando, ao invez de ensinar o básico aos iniciantes, já começam ensinando Java.

Share this post


Link to post
Share on other sites
M6

Ou não compreendi ou não te expressaste bem, mas o Pascal da Borland (Turbo Pascal) suporta objetos.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
passarito

Penso que sim, mas não sou grande expert na matéria de Programação Orientada por Objectos, mas há por aqui pessoal que te pode ajudar muito mais do que eu.

Encontrei algo que te pode ser útil:

Em Inglês - http://www.bitsavers.org/pdf/borland/turbo_pascal/Turbo_Pascal_Version_5.5_Object-Oriented_Programming_Guide_1989.pdf

Em Português - http://renepegoraro.tripod.com/ADAII/Aula9.pdf

  • Vote 1

Share this post


Link to post
Share on other sites
nunopicado

Correcto, o Borland Pascal suporta objectos desde a versão Turbo Pascal 5.5, de 1989 (coisa recente, daí os teus colegas não saberem ainda :cheesygrin:)

Lógico que a linguagem foi evoluindo para lá da Borland, e os objectos que podes fazer num compilador recente como o FreePascal ou o Delphi estão a anos luz do que o TP5.5 permitia, mas isso é plenamente natural... 

Reutilização de código é sempre possível fazer, em qualquer LP digna do nome, e Pascal não é excepção.
O meu projecto Reusable Objects é mesmo exemplo disso. São objectos, interfaces e respectivas implementações padrão, que uso e reuso em inúmeros projectos meus. Funcionam mais ou menos como peças de lego. Há lá uma série delas, e vamos usando as que nos dão jeito para criar o software.

Havia no tempo dele um projecto associado ao TP chamado Turbo Vision, que era uma framework para criar um User Interface, com menus e tudo, feito com objectos em TP 5.5. Os TP's seguintes, como o TP 6.0, já tinham o seu IDE construído com recurso ao Turbo Vision, num exemplo de reutilização de código e objectos em TP 5.5.

  • Vote 2

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Yamix

Eu meio que já sabia que dava para usar objetos no FreePascal, mas ainda não entendo perfeitamente a Orientação a Objetos então fiquei em dúvida.

Enfim, sobre o re-uso de código seria exatamente as Uses que nós podemos criar, eu pensava que re-uso tinha a ver com outra coisa..

Antes de acabar, gostaria de saber se vocês também ficam um pouco nervosos com o fato, dos outros programadores, rebaixarem tanto o Pascal?

Atualmente, estou no 2 Período de Ciência da Computação, mas no semestre passado, o professor de algoritmo pediu para que os alunos fizessem um programa com um tema (por exemplo, vendas de carro), usando matrizes para montar uma tabela, e que permitisse a interação do usuário com a tabela, tudo em Java.

(Professor, já sabia que eu era apaixonado por Pascal e logo no primeiro mês já me apelidou de "Pascal".. Ha-ha, engraçadão, ele é daquele tipo de professor que se acha superior.)

2 semanas após ele ter passado o trabalho, finalmente chega o dia de entrega do programa, e ficou combinado que o aluno sentaria ao lado do professor e explicaria como funcionava o programa.

Fui o primeiro da lista, logo, sentei ao lado dele e passei meu código para ele.. Ele leu o código todo sem dizer um palavra, quando terminou o código me disse: "- Típico de programadores de Delphi, colocam os métodos todo acima do programa ao invez de escrever dentro do bloco principal.." , respondi que alguns blocos de código ali se repetiam ao decorrer do programa e que era mais fácil criar os métodos para eles.. Então, ele ficou em silêncio. Os outros apenas olharam pra mim com os olhos arregalados por ter visto que eu respondi ao professor com o mesmo tom de superioridade que ele se dirigia a mim. Sentei na minha cadeira e fiquei quieto, depois disso ele nunca mais me chamou de Pascal, apenas pelo nome.

 

Share this post


Link to post
Share on other sites
thoga31

Eu pensava que estávamos em 2018, não em 1971! É este o estado da educação no mundo? É esta a mentalidade dos informáticos de hoje e amanhã?

O @nunopicado já disse tudo.

@Gabriel Gomes, por favor, mantém-te assim, humilde e sempre disposto a aprender mais sobre tudo!

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
CrominhO
5 horas atrás, Gabriel Gomes disse:

(...) "- Típico de programadores de Delphi, colocam os métodos todo acima do programa ao invez de escrever dentro do bloco principal.." ,(...) 

 

Eu já não sou tão simpático como o Nuno ou o Thoga , já me falta paciência lol 🙂 ... Tu, e a tua turma, não têm um professor a dar aulas, têm um Calhau com 2 olhos lool :D só pelo que disseste, tenho a certeza que se fosse eu a avaliar uma Aplicação desenvolvida por ele não conseguiria mesmo com esforço dar-lhe positiva lol

Nada de nervos amigo ;) quando terminares o teu curso, e se optares por programação irás-te lembrar desta situação e rir ;)

Edited by CrominhO

As mentes humanas são realmente um local estranho!

Share this post


Link to post
Share on other sites
pwseo

Yamix,

Além do que já foi referido pelo Nuno, queria apenas salientar que existe uma outra opção, «entre o procedural e o orientado a objectos»: podes utilizar records que te permitem criar tipos de dados (ditos «complexos») que consistem na agregação de tipos de dados mais simples: podes, por exemplo, ter um tipo de dados Carro que agregue em si uma String para a marca e modelo, outra para a matrícula, e vários Real / Integer para coisas como a potência, consumo, entre outros.

As diferenças desta abordagem para a programação orientada a objectos são inúmeras, mas de uma forma superficial, terias que ter funções/procedimentos globais para manipulação destes tipos de dados, ao invés de teres métodos que fazem parte de cada objecto. Por vezes não precisamos de todas as vantagens (e complexidade) associadas à orientação para objectos, pelo que é importante conhecer também as opções que ficam «a meio termo».

Relativamente à organização do código e os comentários feitos pelo suposto professor, já outros comentaram (e muito bem), pelo que não vou repetir o que já foi dito. Queria apenas referir que acho muito correcta a tua percepção de que Java é uma má linguagem para quem nunca programou: obriga-te a pensar num paradigma que não é necessariamente o melhor para todas as situações e isso é especialmente verdade quando se está a começar a programar. Em relação a isto, Pascal (nas suas implementações modernas como Free Pascal, Delphi) é de longe muito mais pedagógico, permitindo começar no zero e evoluir a um bom ritmo para praticamente todos os conceitos de alto nível que se vê noutras linguagens imperativas (como Java).

  • Vote 1

Share this post


Link to post
Share on other sites
Yamix

Exatamente Pwseo,

Quando minha professora de Linguagem de Programação estava dando uma breve introdução aos objetos, eu vi que era práticamente quase a mesma coisa, o que diferencia é poder privar os procedimentos e funções apenas para aquele objeto.

Usando o record como objeto nos provém a mesma ideia, entretanto os procedimentos e funções seriam globais, em alguns casos seria até bem útil, pois não seria necessário usar a herança.. eu ainda não consigo ver diferença do procedural para o orientado a objetos, talvez seja porque java não é totalmente POO, mas dá para fazer muita coisa do procedural para "imitar" o POO usando técnicas diferentes, que já existem no procedural.

Enfim, não sei muito de POO, mas pelo que vi, só pegaram algumas características da procedural e "ampliaram" elas, talvez eu esteja errado..

 

Edited by Yamix

Share this post


Link to post
Share on other sites
pwseo
9 horas atrás, Yamix disse:

Enfim, não sei muito de POO, mas pelo que vi, só pegaram algumas características da procedural e "ampliaram" elas, talvez eu esteja errado..

São paradigmas diferentes, e há muita coisa que consegues fazer em programação orientada a objectos que não consegues fazer de forma procedural (ou melhor, não consegues fazer tão facilmente).

Posto isto, é um óptimo paradigma para aprenderes, mas eu começaria pelo procedural. As vantagens de utilizar a orientação a objectos irão tornar-se evidentes ao longo do caminho (a questão da herança é uma delas), e nessa altura poderás transitar lentamente à medida que vais aprendendo.

Share this post


Link to post
Share on other sites
thoga31

@Yamix, há muito mais no paradigma OOP do que poder colocar métodos como privados :)

Ainda me lembro de quando me introduzi ao paradigma de pensar mais ou menos o mesmo que tu. Mas vários anos se passaram e posso afirmar com toda a certeza que estou muito longe de saber programar verdadeiramente em OOP. É um paradigma extremamente elegante e poderoso quando usado e entendido devidamente, e aí eu não sou, de todo, a melhor pessoa para te poder dar sequer uma ideia do que é possível. Coisas como injecção de dependência e interfaces são exemplos de "maravilhas" deste paradigma. A ideia não é dizeres ao programa exactamente o que fazer (paradigma imperativo, "organizado" com o paradigma procedural), mas sim construir o programa como se fosse um Lego.

Terás tempo de chegar ao paradigma OOP depois de te sentires confortável nos paradigmas procedural e imperativo. Duvido que os teus amigos do Java saibam sequer o que é OOP a sério. Quando um dia lá chegares, poderás ser tu a dar umas aulas de OOP aos teus Java friends. ;)

Um passo de cada vez sem pressa, é o melhor conselho que creio que qualquer um de nós pode dar neste momento.

Cumprimentos.

  • Vote 1

Knowledge is free!

Share this post


Link to post
Share on other sites
Yamix
21 horas atrás, thoga31 disse:

@Yamix, há muito mais no paradigma OOP do que poder colocar métodos como privados :)

Ainda me lembro de quando me introduzi ao paradigma de pensar mais ou menos o mesmo que tu.

Haha, parece ser mesmo comum ter essa ideia, se não souber mais que o básico do que é o OOP.

22 horas atrás, thoga31 disse:

A ideia não é dizeres ao programa exactamente o que fazer (paradigma imperativo, "organizado" com o paradigma procedural), mas sim construir o programa como se fosse um Lego.

Terás tempo de chegar ao paradigma OOP depois de te sentires confortável nos paradigmas procedural e imperativo.

Realmente muito interessante, as vezes eu tento entender algumas coisas de OOP. No geral parece fácil, mas tenho certeza que essa facilidade é só uma ilusão por não conhecer a fundo o paradigma. Mas também já vi algumas coisas que são mais complicadas, aliás, se fosse tão fácil assim, não teria graça ficar programando. 

Estou tentando aprender a sério Pascal, dessa vez tento fazer programas simples usando outros métodos, tento usar comandos de outras units, criar funções e procedimentos mais complexos, enfim tento fazer de uma maneira diferente sempre.

De fato isso funciona, começei a ter muito mais noção do que eu tinha que fazer para resolver um problema. Meu eu antigo provavelmente desistiria ou pediria ajuda, haha..

22 horas atrás, thoga31 disse:

Duvido que os teus amigos do Java saibam sequer o que é OOP a sério. Quando um dia lá chegares, poderás ser tu a dar umas aulas de OOP aos teus Java friends. ;)

Um passo de cada vez sem pressa, é o melhor conselho que creio que qualquer um de nós pode dar neste momento.

Cumprimentos.

Haha, vamos ver ;)

 "- A pressa é inimiga da perfeição."

Obrigado pelo conselho, continuarei buscando evoluir sempre!

Bye~

 

Share this post


Link to post
Share on other sites
pwseo
38 minutos atrás, Yamix disse:

No geral parece fácil, mas tenho certeza que essa facilidade é só uma ilusão por não conhecer a fundo o paradigma.

Mas não te sintas desanimado! No geral, a programação orientada a objectivos facilita imenso o desenvolvimento de certos tipos de programas. Sim, também há conceitos complexos, mas mesmo esses (quando lá chegares) vais ver que apesar de complexos ajudam imenso a fazer coisas que anteriormente hesitarias pela sua dificuldade!

Temos aqui alguns programadores que dominam POO em Pascal (*hint* @nunopicado :P)

  • Vote 1

Share this post


Link to post
Share on other sites
nunopicado
5 horas atrás, Yamix disse:

No geral parece fácil, mas tenho certeza que essa facilidade é só uma ilusão por não conhecer a fundo o paradigma.

OOP, no seu conceito geral, não é difícil. A grande dificuldade que muitos encontram é a diferença de paradigmas, mais do que a dificuldade intrínseca do paradigma em si.

O de um programador imperativo para um programador OOP é radicalmente diferente.
O que acontece é que muitos querem programar em OOP com o mindset imperativo. Fazem uns objectos, usam umas heranças, metem umas propriedades, e pensam que é OOP.
Mas depois vão e misturam UI com domínio, heranças onde não devem ser usadas, métodos com centenas de comandos em sequência, classes com multi-responsabilidade, etc.

Quando dão por ela, é tudo menos OOP.

Lembro-me de te dizer uma vez que Delphi (ou Object Pascal, no geral), é tão simples que até ser mau programador é fácil. Repito-o.
Em Delphi, com o seu IDE RAD (Integrated Development Environment - Rapid Application Development), queres um botão, arrastas para a form. Duplo click no botão e ele cria-te logo o esqueleto de código do evento que esse botão despoleta. E o programador 'comum' completa lá o código do que quer fazer.

É um objecto? É. 
Funciona? Sim.
É OOP? Nem pensar.
Vai dar dor de cabeça quando for preciso dar manutenção? Sem sombra de dúvida!

Mas isto não significa que não se possa trabalhar bem. Dá mais trabalho? Claro que sim. Mas fica bem feito, e a longo prazo, o trabalho inicial irá poupar outro: O da manutenção.

As coisas têm um tempo certo de acontecer, e o teu interesse em aprender é uma tremenda mais valia para ti. É isso que separa o bom programador do programador medíocre.
Se ainda não sabes (seja o que for), irás saber. Irás aprender, irás mergulhar, irás usar.
O trajecto dos outros é só deles. Se for bom, terão futuro. Se não for, acabarão por mudar de rumo.

Não te preocupes em demasia, faz o teu próprio percurso, e alguma coisa, estamos aqui. ;)

  • Vote 2

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.