• Nenhum resultado encontrado

CAPÍTULO III ENQUADRAMENTO TECNOLÓGICO

3.1. Programação

De acordo com Mendes e Marcelino (2012:1) “A programação é […] a arte de analisar um problema e encontrar um conjunto de ações (um algoritmo) capaz de o resolver corretamente. A noção de programação está intimamente relacionada com a programação informática, uma vez que o programador insere o código fonte (numa linguagem de programação) num software de forma a que o programa informático assinale o modo e forma de agir, para que, este possa escrever, averiguar e manter esse código.

Ou seja,

“Uma linguagem de programação atua como um tradutor entre você e o computador. Em vez de aprender a linguagem nativa do computador (conhecida como linguagem de máquina), você pode usar uma linguagem de programação para instruir o computador de uma maneira que é mais fácil de aprender e entender” (Microsoft, 2016).

É por esta razão que os modelos de desenvolvimento de software se inserem na engenharia de software, dado que é a partir da utilização de algoritmos, como sequências finitas, ordenadas e não ambíguas, ou seja, instruções escritas na linguagem de programação, que se resolvem os problemas. Os programas informáticos são escritos, pelo que se deve compilar o código de forma a ser executado pelo computador. “Um programa especializado conhecido como um compilador leva as instruções escritas na linguagem de programação e converte-as em linguagem de máquina. Isso significa que como um programador […] não precisa compreender o que o computador está fazendo ou como ele faz isso” (Microsoft, 2016).

Capítulo III – Enquadramento Tecnológico

14 A programação encontra-se dividida em vários conceitos: estruturada, modular, orientada a objetos e linear. No caso concreto desta investigação apenas se irá utilizar a programação orientada a objetos. Assim sendo, Voss (1991) define programação por objetos (objetos, classes, interface, variáveis) como sendo:

“Object orientated programing is a struturing technique. In object-oriented programming, objects are the principal elements of construction. However, simply understanding what an object is or using objects in a program does not mean you are programing in an object- oreintated fashion. It is the way objects are pieced together that counts” (Voss, 1991:11).

Em jeito de síntese podemos afirmar, a partir da citação acima exposta, que apenas utilizando um objeto ou objetos não significa que se sabe programar este tipo de conceito. Desta forma, convém ter a estrutura geral do programa bem delineada.

Segundo Campione, Walrath e Huml (2001:46) define-se objeto como um software com um pacote de variáveis e métodos relacionados: “an object is a software bundle of variables and related methods”.

No âmbito da programação procedimental é possível contruir um programa com elementos que o compõem podendo mesmo assim ser violados os princípios da construção sólida (Voss, 1991). Este princípio aplica-se tanto à abordagem orientada a objetos, como à programação procedimental. De acordo com o exposto conclui-se que, neste tipo de programação, o facto de se ter a ideia ou o algoritmo bem definido não garante que irá ser construído um código robusto, sem erros, fácil de ler, utilizar e modificar. Assim, surge a importância de se ter uma perspetiva geral da estrutura da programação orientada a objetos (Voss, 1991).

O mesmo autor refere, de forma mais rigorosa, que:

“the exact meaning of object-oriented programing, it is programing by sending messages to objects of unknown type. Such objects would be found in an array or in a collection such as a desktop. All objects in the collection share certain caractheristics. From programers perspective, selection of an object within the collection does not provide information about the object’s exact type” (Voss, 1991:12).

Já que o tipo do objeto não é conhecido quando a mensagem lhe é enviada, a reação exata do objeto não pode ser antecipada. O envio de mensagens aos objetos de tipo desconhecido é uma ferramenta de programação eficaz e é isso mesmo a programação orientada a objetos (Voss, 1991). As mensagens são enviadas ao objeto para ele invocar os seus métodos ou comportamentos.

Assim sendo, os objetos são a chave para entender este conceito de programação, na medida em que se pode ver diversos exemplos do quotidiano como: o cão, a mesa, a televisão

Capítulo III – Enquadramento Tecnológico

15 e a bicicleta. Estes objetos do quotidiano têm características em comum: um comportamento e um estado, ou seja, os cães têm atributos/estados como: nome, raça e um comportamento/método como: ladrar, buscar, abanar o rabo (Campione, Walrath e Huml, 2001).

Outra componente da programação por objetos, são as classes, que se podem definir como um desenho técnico, ou protótipo que define as variáveis e um método comum para todos os objetos de um certo tipo: “a class is a blueprint, or prototype, that defines the variables and the method common to all objects of certain kind” (Campione, Walrath e Huml, 2001:49).

Tal como na vida real o carro é um exemplo de um objeto entre os inúmeros existentes no planeta. Utilizando a terminologia orientada a objetos podemos referir que o objeto carro é um exemplo de uma classe de objetos conhecidos como carros, em que a mesma classe apresenta um estado (matricula, marca, entre outros) e comportamento (acelerar, travar, buzinar) em comum. No entanto o estado de cada carro é independente dos restantes. Também é possível no software orientado por objetos ter vários deles do mesmo tipo com as mesmas características, como por exemplo: retângulos, registos dos empregados, entre outros. Seguindo novamente o exemplo do carro verifica-se que, tal como os seus fabricantes, podemos tomar partido do facto daqueles objetos serem semelhantes e criar o seu próprio desenho técnico, que se denomina de classe (Jesus, 2013), no âmbito do software para esses mesmos objetos.

Na plataforma/jogo do matUTAD, de forma a controlar os acessos das classes, atributos e métodos das perguntas elaboradas e guardadas, utilizamos o conceito de encapsulamento usando os modificadores de acesso:

- Public: Permite a visualização por parte de qualquer classe a outras classes, atributos e métodos, feitas na construção de perguntas e imagens no programa do JAVA, bem como são guardadas na Base de Dados.

- Protected: As ligações à base de dados são protegidas de modo a que os métodos e atributos da classe pergunta sejam apenas visíveis para suas subclasses (tipos de pergunta); - Private: Restringe a visualização e o acesso das classes, métodos e atributos dentro da mesma classe (Jesus, 2013).

Na utilização do programa/plataforma o utilizador não necessitará de saber como estes métodos e subclasses são chamados, já que apenas são fornecidas as questões por métodos que retornam ou obtêm os valores (getters) (Jesus, 2013).

Capítulo III – Enquadramento Tecnológico

16 Naquele programa encontra-se o conceito de herança visto existir a superclasse Pergunta.java do qual são herdadas certas características para as suas subclasses (tipos de pergunta) (Jesus, 2013).

Neste programa foi necessário implementar uma classe abstrata, já que as classes concretas necessitam de uma estrutura delineada. Assim, a escolha de utilizar uma classe abstrata centrou-se na possibilidade de utilizar o template (modelo) de uma pergunta geral, no qual as classes derivadas (tipos de pergunta) iriam adicionar um comportamento especifico, neste caso a geração de pergunta mediante o tema pretendido.

Relativamente às variáveis, estas são itens de dados com um identificador, em que um objeto armazena o seu estado em variáveis. Assim sendo, na construção de um programa deverá fornecer-se um nome e um tipo a cada variável. O tipo da variável determina o valor que suporta as operações que se podem realizar (Campione, Walrath e Huml, 2001).

Documentos relacionados