Yamix Posted August 8, 2018 at 03:29 AM Report #611519 Posted August 8, 2018 at 03:29 AM É 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.
M6 Posted August 8, 2018 at 11:16 AM Report #611533 Posted August 8, 2018 at 11:16 AM 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."
passarito Posted August 8, 2018 at 11:21 AM Report #611534 Posted August 8, 2018 at 11:21 AM 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 1 Report
nunopicado Posted August 8, 2018 at 11:48 AM Report #611535 Posted August 8, 2018 at 11:48 AM 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 😁) 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. 2 Report "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.
Yamix Posted August 8, 2018 at 05:52 PM Author Report #611552 Posted August 8, 2018 at 05:52 PM 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.
Popular Post nunopicado Posted August 8, 2018 at 08:15 PM Popular Post Report #611554 Posted August 8, 2018 at 08:15 PM (edited) Estou até meio que sem saber o que responder a essa história do professor, pelo que vou deixar para último... 😕 Em 08/08/2018 às 18:52, Gabriel Gomes disse: 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. Isso é outra coisa... Ninguém nasce ensinado, e o paradigma OOP é radicalmente diferente do Imperativo. Muitas pessoas (sim, programadores de Java também) não fazem a mais pálida ideia de como se programa realmente em OOP. Acham que programar orientado a objectos é... fazer objectos. É muito mais. Todo o conceito muda, a forma de pensar tem de mudar também, ou apenas terão objectos a fazer o papel de armazéns de código. Recomendo, para entender o conceito OOP, o livro Object Thinking (David West). Não tem nada a ver com Pascal, Java, etc. É um livro para expandir um conceito. Alguns exemplos usados estão em SmallTalk, mas poderiam estar em qualquer outra, visto que são só exemplos para entender o conceito. Já programei muito em Imperativo, e programei muito mais em 'Imperativo com Objectos' - e pensava como os outros que estava a fazer OOP. Actualmente prefiro programar em "OOP a sério", e com anos disto considero que ainda tenho muito para aprender. É uma evolução constante para quem quer realmente aprender, mas dependendo do tipo de software que se quer criar, vale a pena o esforço. Em 08/08/2018 às 18:52, Gabriel Gomes disse: 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.. As Units do Pascal, que depois chamas na secção Uses, são apenas uma das formas de reutilizar código. Um simples procedimento é uma forma de reutilizar. Um objecto, uma framework - há várias formas de reutilizar código, e podem e devem ser usadas em Pascal (ou qualquer outra LP). Sempre que no teu código usares copy/paste, quase de certeza estás na presença de uma situação onde um qualquer método de reutilização de código se faz necessário. Em 08/08/2018 às 18:52, Gabriel Gomes disse: 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? Isso já virou piada entre os programadores de Pascal... Pessoas que nunca tocaram no Pascal a reclamarem dele é motivo para rir. Pessoas que tentam comparar o Standard Pascal - uma LP de 1974 formalizada em 1983, com um conjunto limitado de funcionalidades visto que era uma linguagem pensada para uso académico - com LPs actuais com funcionalidades actuais. Obviamente, nesta comparação, Pascal perde. O que falta a essa malta é aprender a não comparar alhos com bugalhos. Querem comprar com uma LP actual? Então comparem com Delphi actual. E mesmo quando comparam o Pascal 'actual', em vez de compararem linguagens, comparam compiladores - e geralmente acham boa ideia comparar com PascalZIM, que, sem desprimor ao seu criador, é muito fraquinho, tendo apenas uma pequena parte das funcionalidades do Pascal. Bem... Tem de ser, vamos a isto: Em 08/08/2018 às 18:52, 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." Se ele disse mesmo isto, podes por favor dizer-lhe que ele é burro que nem uma porta, que não tem competência para ser professor de informática, muito menos de programação, e muito provavelmente não devia ser autorizado nem a operar uma calculadora de bolso... Podes dizer que fui eu que disse! A divisão do código em segmentos menores - sejam métodos, funções, procedimentos, rotinas, units, módulos, ou o que quiseres chamar-lhe - não é 'típico de programadores de Delphi'. É típico de quem sabe programar, seja em que linguagem for. Colocar todo o código no bloco principal? A sério? Até o Basic evoluiu para além disso. Imagina criar um projecto com milhões de linhas de código, todas no bloco principal. Ui, que lindo seria. Se esse é o teu professor, a minha sugestão é fazeres tudo ao contrário do que ele mandar. Aprendes mais a limpar o pó a livros de lógica e algoritmia do que a ser ensinado por quem quer que seja que te diga isso. Edited August 16, 2018 at 10:24 AM by nunopicado 3 Report "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.
thoga31 Posted August 8, 2018 at 08:43 PM Report #611555 Posted August 8, 2018 at 08:43 PM (edited) 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 August 8, 2018 at 09:43 PM by thoga31 Knowledge is free!
CrominhO Posted August 8, 2018 at 10:59 PM Report #611556 Posted August 8, 2018 at 10:59 PM (edited) 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 😄 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 August 8, 2018 at 11:00 PM by CrominhO As mentes humanas são realmente um local estranho!
pwseo Posted August 15, 2018 at 11:14 AM Report #611601 Posted August 15, 2018 at 11:14 AM 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). 1 Report
Yamix Posted August 20, 2018 at 01:04 AM Author Report #611633 Posted August 20, 2018 at 01:04 AM (edited) 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 August 20, 2018 at 01:06 AM by Yamix
pwseo Posted August 20, 2018 at 08:39 AM Report #611634 Posted August 20, 2018 at 08:39 AM 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.
thoga31 Posted August 20, 2018 at 08:34 PM Report #611636 Posted August 20, 2018 at 08:34 PM @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. 1 Report Knowledge is free!
Yamix Posted August 21, 2018 at 06:52 PM Author Report #611639 Posted August 21, 2018 at 06:52 PM 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~
pwseo Posted August 21, 2018 at 07:28 PM Report #611640 Posted August 21, 2018 at 07:28 PM 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) 1 Report
nunopicado Posted August 22, 2018 at 12:35 AM Report #611641 Posted August 22, 2018 at 12:35 AM 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. 😉 2 Report "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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now