Quais problemas de design e implementação os programadores tiveram que resolver quando decidiram primeiro usar estruturas e classes?
Quando isso aconteceu e quem foram os pioneiros por trás dessas idéias?
Observe que essa é uma pergunta dupla, porque estruturas e classes estão relacionadas. Eu percebo que as estruturas são bem mais antigas que as classes. Seria ótimo se a resposta falasse separadamente sobre os dois e citasse algumas fontes.
struct
palavra - chave opcional quando a estrutura é usada.Respostas:
A idéia de uma estrutura é agrupar uma coleção de variáveis em um único contêiner. Por exemplo, se você tiver três coordenadas
convém vê-los como uma unidade de dados e agrupá-los:
Você pode ver isso como uma maneira de modularizar seus dados. Agora você pode definir variáveis contendo todos os três valores em uma unidade:
Na programação processual, você possui procedimentos ou funções que manipulam dados e, em particular, estruturas, por exemplo
Você pode chamar a função em uma estrutura passando-a como argumento:
O passo de estruturas para classes é dizer que procedimentos / funções devem ser agrupados com dados em unidades: como estruturas classificam entidades que possuem a mesma estrutura, classes classificam entidades que possuem a mesma estrutura e operações.
Então agora você pode escrever:
e depois:
Dessa maneira, é mais fácil agrupar operações que funcionam no mesmo tipo de dados. Por exemplo, você pode agrupar todas as operações que atuam em pontos na definição de classe, em vez de espalhá-las pelo seu código como funções que possuem um ou mais parâmetros do tipo point.
Além disso, você pode refinar a estrutura e o comportamento usando herança.
Resumindo: estruturas são um conceito que permite organizar / modularizar dados. As classes permitem organizar / modularizar dados e operações.
fonte
Simula 67
como o WorldEngineer escreve e talvez algum lugar seja escrito por que essa idéia se tornou popular entre outras linguagens de programação.Estruturas são grupos de dados, tipicamente digitados. COBOL viu o primeiro uso generalizado deles. Embora existissem análogos a isso anteriormente. O problema de design aqui é agrupar vários conjuntos de dados, como um nome, uma ocupação e um número de telefone. A idéia de um "registro" é algo muito mais antigo que a computação e aparece na matemática e em várias outras disciplinas.
A Programação Orientada a Objetos foi originalmente projetada para lidar com a simulação em que você teria vários objetos em execução para simular um sistema. O Simula 67 foi o primeiro a implementar esse estilo de programação. Smalltalk foi a primeira linguagem totalmente orientada a objetos, onde tudo é um objeto, incluindo primitivos. O problema original que estava sendo resolvido era a simulação de sistemas complexos. O Simula 67 foi projetado por Ole-Johan Dahl e Kristen Nygaard. Alan Kay (que já respondeu a uma pergunta no Stack Overflow ) projetou o Smalltalk, que ainda é usado.
Estruturas e classes estão intimamente relacionadas aos tipos, pois ambas definem certos parâmetros para um conjunto de dados. As classes definem ainda mais as permissões e operações de acesso, permitindo tipos de dados abstratos totalmente implementados. As estruturas podem ser pensadas em um subconjunto de Classes em uma linguagem orientada a objetos. Eles seriam uma classe de wrapper que possui todos os campos definidos como públicos e nenhum método fora dos getters e setters para esses campos.
fonte
Você pode encontrar informações sobre estruturas neste artigo da Wikipedia . Em resumo, eles parecem estar tão profundamente ancorados na ciência da computação que foram suportados primeiro por hardware (instruções especiais no IBM 1620, cartões perfurados basicamente como uma instância de registro e no Analytical Engine do Babbage (pelo menos de acordo com a wikipedia). primeira linguagem amplamente usada para apoiar a construção.
fonte
"estruturas" são realmente completamente diferentes de "classes". Pense no estilo antigo "struct" como um registro. No QBASIC eles foram chamados assim. A necessidade disso é bastante óbvia e, embora eu não possa dizer quem o inventou ... eu imagino que surgiu quase imediatamente. As "classes" de POO parecem ter começado bastante bem com o Simula: http://en.wikipedia.org/wiki/Object-oriented_programming#History
fonte
struct
e aclass
é oclass
padrão,private
enquanto ostruct
padrão épublic
.