Bom dia ,venho por este meio submeter o 4º resumo do livro, no dia 13/11/2023 pela 9:31 .

45 á 54

Ao analisar a fundo as implementações atuais de Session e EntityManager do Hibernate, elas não retornam nem ArrayList, nem LinkedList, nem nenhuma coleção do java.util, e, sim, implementações de listas persistentes de pacotes do próprio Hibernate.

 Isto é possível, novamente, pelo desacoplamento provido pelo uso das interfaces.

 Além disso, o retorno das consultas com JPA e Hibernate são List, para deixar claro ao usuário que a ordem é importante.

 Manter a ordem de inserção e permitir acesso aleatório são características do contrato de List e são importantes para o resultado de consultas, pois podem definir uma ordenação (order by), uma ótima justificativa para optar por uma interface mais específica, e não usar Iterable ou Collection.

Nas principais APIs do Java, é fundamental programar voltado à interface.

Caso contrário, esse método poderia, e deveria, receber uma referência a InputStream, ficando mais flexível e podendo receber os mais diferentes tipos de streams, como argumento, que provavelmente não foram previamente imaginados.

Utilize sempre o tipo menos específico possível.

Repare que, muitas vezes, classes abstratas trabalham como interfaces, no sentido conceitual de orientação a objetos.

Classes abstratas possuem a vantagem de se poder adicionar-lhes um novo método não abstrato, sem quebrar o código já existente.

Já com o uso de interfaces(aqui, pensando na palavra-chave do Java), a adição de qualquer método acarretará a quebra das classes que a implementam.

Programe voltado à interface, não à implementação Casa do Código interfaces nunca definem nenhuma implementação, a vantagem é que o código está sempre desacoplado de qualquer outro que as utilize.

Isso muda com os polêmicos extension methods do Java 8, permitindo escrever uma implementação padrão nas interfaces, possibilitando suas evoluções, ao mesmo tempo que minimiza a quebra de compatibilidade.

Sempre que encontramos um código trabalhando com conexões de banco de dados, vemos referências à interface Connection, e nunca diretamente a MySQLConnection, OracleConnection, PostGreSQLConnection, ou qualquer outra implementação de um driver específico, apesar de esta possibilidade existir.

Desta forma, fica muito fácil trocar a implementação sem modificar todo o restante do código. Isso ocorre graças ao desacoplamento provido pelo uso de interfaces.

No caso do JDBC, essa escolha por uma implementação está centralizada na classe concreta DriverManager, que aqui age como uma factory.

O uso exagerado de reflection para invocar métodos dependendo de algumas condições pode ser muitas vezes substituído por interfaces.

Assim, a decisão de qual método invocar é deixada para a invocação virtual de método que o polimorfismo promove, diminuindo bastante a complexidade e aumentando a manutenibilidade, além de algum ganho de performance. Apesar de simples, existem seis possibilidades diferentes de execução do método, além de ele misturar diversos comportamentos que não possuem relação, isto é, responsabilidades diferentes para uma única classe: impostos, estoques, transferências e e-mails.

Tal comportamento pode ser composto por diversas partes menores e, para tanto, refatorações pequenas podem ser executadas.

 A mais simples seria a extração de quatro métodos, uma solução que simplifica o código atual, mas não aumenta sua coesão.

 É possível aumentar a coesão da classe extraindo tais métodos em quatro classes distintas, como RetemImposto, ProcessaEstoque, Transferencia e Confirmacao.

À medida que foi necessário, o código era refatorado.

 Após a quebra de um comportamento em diversas partes, é necessário juntar esses comportamentos novamente. Composição (composition) é esta união através da utilização de alguma prática de design, como no caso visto anteriormente, no qual o polimorfismo permite trabalhar de maneira uniforme com partes que executam tarefas distintas.

Um método que apresente um corpo com um número razoável de branches (como ifs e switches), ou que não permita a compreensão imediata de seu comportamento, pode ser refatorado para facilitar sua manutenção de Orientação a Objetos bem o código interno da classe mãe, o que é visto como uma quebra de encapsulamento.

 Podemos enxergar este problema em um exemplo encontrado no pacote java.util, com Properties e Hashtable.

A classe Properties herda de Hashtable e, portanto, instâncias de Properties possuem disponíveis métodos de Hashtable.

Mas, muitas vezes, esses métodos não fazem sentido, como no caso da Properties que lida apenas com Strings.

A quebra aparece quando temos uma instância de Properties e invocamos o método put(Object, Object), em vez de setProperty(String, String), podendo passar um Object qualquer como argumento.

Nesse caso, ao invocar posteriormente o método getProperty(String), recebemos um inesperado null.

 Não há como evitar que alguém invoque o método que trabalha com Object, a não ser documentando a respeito, como ocorre no javadoc dessa classe.

 Ter de garantir condições apenas através do javadoc é um contrato muito fraco, em especial dizendo que tal método não deve ser invocado com determinados tipos de objetos, algo que, em Java, poderia ser feito através da tipagem estática.

 Herança é comumente citada em cenários de reúso de código, mas não é a única solução.

 Usar composição permite reaproveitamento de código sem o efeito indesejado da quebra de encapsulamento.

Para que a classe Properties reaproveitasse os recursos já existentes em Hashtable com composição bastaria um atributo Hashtable privado, e o método setProperty delegaria a invocação para o hashtable.put.

Dessa maneira, expomos apenas os métodos que desejamos, sem possibilitar que fosse invocado o hashtable.put diretamente, nem que Properties pudesse ser passada como argumento para alguém que espera uma Hashtable.

 Melhor ainda, com o surgimento da API de Collections,  a implementação poderia ser facilmente trocada por algum Map sem causar problemas aos usuários da classe.

O uso abusivo de herança ocorre em diversos frameworks e APIs.

O Struts 1 é um exemplo deste uso e de seus diversos problemas relacionados; somos instruídos a estender Action e, ao mesmo tempo, a tomar muito cuidado com seu ciclo de vida, principalmente ao sobrescrever alguns métodos-chave dessa classe.

 Em linguagens com suporte a mixin, como Ruby, o acoplamento com as classes pode gerar complicações ainda maiores, que só serão percebidas em tempo de execução.

O problema da herança aparece, mesmo que mais sutilmente, no uso de classes abstratas para aplicar patterns, como o template method.

O novo método init(), sem parâmetros, deve ser reescrito; ele é invocado pelo próprio init(ServletConfig) após o ServletConfig ser guardado em um atributo.

Dentro de um init() reescrito podemos obter acesso ao ServletConfig através do getter da classe mãe, que agora estará corretamente atribuído.

Mesmo assim, em razão da tomada de decisão original na API de servlet, o desenvolvedor ainda deve conhecer como esses métodos funcionam na classe mãe, pois só assim saberá de todos os cuidados que são necessários.

Mas nem tudo é negativo. Todo esse design de servlets tem como objetivo principal trazer o polimorfismo e uma interface de uso uniforme para as servlets serem chamadas pelo container. Contudo, em Java, é possível usar interface para polimorfismo, sem os pontos negativos da herança como quebra de encapsulamento e alto acoplamento.

A API de servlets poderia ter usado um design baseado em interfaces com um strategy pattern por exemplo, evitando a herança.

Ao substituir a herança por interface, continuamos com o benefício do polimorfismo.

 Mas herança ainda traz outro grande benefício, o reaproveitamento de código, algo que interfaces puras não fazem.

Podemos então usar interfaces com composição, obtendo substitutos para todos os benefícios de herança sem correr o risco de cair na armadilha da quebra de encapsulamento e alto acoplamento.

 Repare que, desta forma, o acoplamento é bem menor, nenhuma das classes precisa conhecer o funcionamento interno das outras.

 Porém, se for necessário o uso de herança, alguns cuidados são importantes para minimizar a possível quebra de encapsulamento.

 Joshua Bloch, no Effective Java, fala de Design for Inheritance, com diversas práticas como evitar invocações entre métodos públicos, para que a sobrescrita de um não mude o comportamento de outro.

 Ao mesmo tempo que desejamos evitar herança, temos interesse em permitir mudança no nosso comportamento sem a necessidade de alterar ou copiar o código original.

Ao analisar a fundo as implementações atuais de Session e EntityManager do Hibernate, elas não retornam nem ArrayList, nem LinkedList, nem nenhuma coleção do java.util, e, sim, implementações de listas persistentes de pacotes do próprio Hibernate.

 Isto é possível, novamente, pelo desacoplamento provido pelo uso das interfaces.

 Além disso, o retorno das consultas com JPA e Hibernate são List, para deixar claro ao usuário que a ordem é importante.

 Manter a ordem de inserção e permitir acesso aleatório são características do contrato de List e são importantes para o resultado de consultas, pois podem definir uma ordenação (order by), uma ótima justificativa para optar por uma interface mais específica, e não usar Iterable ou Collection.

Nas principais APIs do Java, é fundamental programar voltado à interface.

Caso contrário, esse método poderia, e deveria, receber uma referência a InputStream, ficando mais flexível e podendo receber os mais diferentes tipos de streams, como argumento, que provavelmente não foram previamente imaginados.

Utilize sempre o tipo menos específico possível.

Repare que, muitas vezes, classes abstratas trabalham como interfaces, no sentido conceitual de orientação a objetos.

Classes abstratas possuem a vantagem de se poder adicionar-lhes um novo método não abstrato, sem quebrar o código já existente.

Já com o uso de interfaces(aqui, pensando na palavra-chave do Java), a adição de qualquer método acarretará a quebra das classes que a implementam.

Programe voltado à interface, não à implementação Casa do Código interfaces nunca definem nenhuma implementação, a vantagem é que o código está sempre desacoplado de qualquer outro que as utilize.

Isso muda com os polêmicos extension methods do Java 8, permitindo escrever uma implementação padrão nas interfaces, possibilitando suas evoluções, ao mesmo tempo que minimiza a quebra de compatibilidade.

Sempre que encontramos um código trabalhando com conexões de banco de dados, vemos referências à interface Connection, e nunca diretamente a MySQLConnection, OracleConnection, PostGreSQLConnection, ou qualquer outra implementação de um driver específico, apesar de esta possibilidade existir.

Desta forma, fica muito fácil trocar a implementação sem modificar todo o restante do código. Isso ocorre graças ao desacoplamento provido pelo uso de interfaces.

No caso do JDBC, essa escolha por uma implementação está centralizada na classe concreta DriverManager, que aqui age como uma factory.

O uso exagerado de reflection para invocar métodos dependendo de algumas condições pode ser muitas vezes substituído por interfaces.

Assim, a decisão de qual método invocar é deixada para a invocação virtual de método que o polimorfismo promove, diminuindo bastante a complexidade e aumentando a manutenibilidade, além de algum ganho de performance. Apesar de simples, existem seis possibilidades diferentes de execução do método, além de ele misturar diversos comportamentos que não possuem relação, isto é, responsabilidades diferentes para uma única classe: impostos, estoques, transferências e e-mails.

Tal comportamento pode ser composto por diversas partes menores e, para tanto, refatorações pequenas podem ser executadas.

 A mais simples seria a extração de quatro métodos, uma solução que simplifica o código atual, mas não aumenta sua coesão.

 É possível aumentar a coesão da classe extraindo tais métodos em quatro classes distintas, como RetemImposto, ProcessaEstoque, Transferencia e Confirmacao.

À medida que foi necessário, o código era refatorado.

 Após a quebra de um comportamento em diversas partes, é necessário juntar esses comportamentos novamente. Composição (composition) é esta união através da utilização de alguma prática de design, como no caso visto anteriormente, no qual o polimorfismo permite trabalhar de maneira uniforme com partes que executam tarefas distintas.

Um método que apresente um corpo com um número razoável de branches (como ifs e switches), ou que não permita a compreensão imediata de seu comportamento, pode ser refatorado para facilitar sua manutenção de Orientação a Objetos bem o código interno da classe mãe, o que é visto como uma quebra de encapsulamento.

 Podemos enxergar este problema em um exemplo encontrado no pacote java.util, com Properties e Hashtable.

A classe Properties herda de Hashtable e, portanto, instâncias de Properties possuem disponíveis métodos de Hashtable.

Mas, muitas vezes, esses métodos não fazem sentido, como no caso da Properties que lida apenas com Strings.

A quebra aparece quando temos uma instância de Properties e invocamos o método put(Object, Object), em vez de setProperty(String, String), podendo passar um Object qualquer como argumento.

Nesse caso, ao invocar posteriormente o método getProperty(String), recebemos um inesperado null.

 Não há como evitar que alguém invoque o método que trabalha com Object, a não ser documentando a respeito, como ocorre no javadoc dessa classe.

 Ter de garantir condições apenas através do javadoc é um contrato muito fraco, em especial dizendo que tal método não deve ser invocado com determinados tipos de objetos, algo que, em Java, poderia ser feito através da tipagem estática.

 Herança é comumente citada em cenários de reúso de código, mas não é a única solução.

 Usar composição permite reaproveitamento de código sem o efeito indesejado da quebra de encapsulamento.

Para que a classe Properties reaproveitasse os recursos já existentes em Hashtable com composição bastaria um atributo Hashtable privado, e o método setProperty delegaria a invocação para o hashtable.put.

Dessa maneira, expomos apenas os métodos que desejamos, sem possibilitar que fosse invocado o hashtable.put diretamente, nem que Properties pudesse ser passada como argumento para alguém que espera uma Hashtable.

 Melhor ainda, com o surgimento da API de Collections,  a implementação poderia ser facilmente trocada por algum Map sem causar problemas aos usuários da classe.

O uso abusivo de herança ocorre em diversos frameworks e APIs.

O Struts 1 é um exemplo deste uso e de seus diversos problemas relacionados; somos instruídos a estender Action e, ao mesmo tempo, a tomar muito cuidado com seu ciclo de vida, principalmente ao sobrescrever alguns métodos-chave dessa classe.

 Em linguagens com suporte a mixin, como Ruby, o acoplamento com as classes pode gerar complicações ainda maiores, que só serão percebidas em tempo de execução.

O problema da herança aparece, mesmo que mais sutilmente, no uso de classes abstratas para aplicar patterns, como o template method.

O novo método init(), sem parâmetros, deve ser reescrito; ele é invocado pelo próprio init(ServletConfig) após o ServletConfig ser guardado em um atributo.

Dentro de um init() reescrito podemos obter acesso ao ServletConfig através do getter da classe mãe, que agora estará corretamente atribuído.

Mesmo assim, em razão da tomada de decisão original na API de servlet, o desenvolvedor ainda deve conhecer como esses métodos funcionam na classe mãe, pois só assim saberá de todos os cuidados que são necessários.

Mas nem tudo é negativo. Todo esse design de servlets tem como objetivo principal trazer o polimorfismo e uma interface de uso uniforme para as servlets serem chamadas pelo container. Contudo, em Java, é possível usar interface para polimorfismo, sem os pontos negativos da herança como quebra de encapsulamento e alto acoplamento.

A API de servlets poderia ter usado um design baseado em interfaces com um strategy pattern por exemplo, evitando a herança.

Ao substituir a herança por interface, continuamos com o benefício do polimorfismo.

 Mas herança ainda traz outro grande benefício, o reaproveitamento de código, algo que interfaces puras não fazem.

Podemos então usar interfaces com composição, obtendo substitutos para todos os benefícios de herança sem correr o risco de cair na armadilha da quebra de encapsulamento e alto acoplamento.

 Repare que, desta forma, o acoplamento é bem menor, nenhuma das classes precisa conhecer o funcionamento interno das outras.

 Porém, se for necessário o uso de herança, alguns cuidados são importantes para minimizar a possível quebra de encapsulamento.

 Joshua Bloch, no Effective Java, fala de Design for Inheritance, com diversas práticas como evitar invocações entre métodos públicos, para que a sobrescrita de um não mude o comportamento de outro.

 Ao mesmo tempo que desejamos evitar herança, temos interesse em permitir mudança no nosso comportamento sem a necessidade de alterar ou copiar o código original.

Ao analisar a fundo as implementações atuais de Session e EntityManager do Hibernate, elas não retornam nem ArrayList, nem LinkedList, nem nenhuma coleção do java.util, e, sim, implementações de listas persistentes de pacotes do próprio Hibernate.

 Isto é possível, novamente, pelo desacoplamento provido pelo uso das interfaces.

 Além disso, o retorno das consultas com JPA e Hibernate são List, para deixar claro ao usuário que a ordem é importante.

 Manter a ordem de inserção e permitir acesso aleatório são características do contrato de List e são importantes para o resultado de consultas, pois podem definir uma ordenação (order by), uma ótima justificativa para optar por uma interface mais específica, e não usar Iterable ou Collection.

Nas principais APIs do Java, é fundamental programar voltado à interface.

Caso contrário, esse método poderia, e deveria, receber uma referência a InputStream, ficando mais flexível e podendo receber os mais diferentes tipos de streams, como argumento, que provavelmente não foram previamente imaginados.

Utilize sempre o tipo menos específico possível.

Repare que, muitas vezes, classes abstratas trabalham como interfaces, no sentido conceitual de orientação a objetos.

Classes abstratas possuem a vantagem de se poder adicionar-lhes um novo método não abstrato, sem quebrar o código já existente.

Já com o uso de interfaces(aqui, pensando na palavra-chave do Java), a adição de qualquer método acarretará a quebra das classes que a implementam.

Programe voltado à interface, não à implementação Casa do Código interfaces nunca definem nenhuma implementação, a vantagem é que o código está sempre desacoplado de qualquer outro que as utilize.

Isso muda com os polêmicos extension methods do Java 8, permitindo escrever uma implementação padrão nas interfaces, possibilitando suas evoluções, ao mesmo tempo que minimiza a quebra de compatibilidade.

Sempre que encontramos um código trabalhando com conexões de banco de dados, vemos referências à interface Connection, e nunca diretamente a MySQLConnection, OracleConnection, PostGreSQLConnection, ou qualquer outra implementação de um driver específico, apesar de esta possibilidade existir.

Desta forma, fica muito fácil trocar a implementação sem modificar todo o restante do código. Isso ocorre graças ao desacoplamento provido pelo uso de interfaces.

No caso do JDBC, essa escolha por uma implementação está centralizada na classe concreta DriverManager, que aqui age como uma factory.

O uso exagerado de reflection para invocar métodos dependendo de algumas condições pode ser muitas vezes substituído por interfaces.

Assim, a decisão de qual método invocar é deixada para a invocação virtual de método que o polimorfismo promove, diminuindo bastante a complexidade e aumentando a manutenibilidade, além de algum ganho de performance. Apesar de simples, existem seis possibilidades diferentes de execução do método, além de ele misturar diversos comportamentos que não possuem relação, isto é, responsabilidades diferentes para uma única classe: impostos, estoques, transferências e e-mails.

Tal comportamento pode ser composto por diversas partes menores e, para tanto, refatorações pequenas podem ser executadas.

 A mais simples seria a extração de quatro métodos, uma solução que simplifica o código atual, mas não aumenta sua coesão.

 É possível aumentar a coesão da classe extraindo tais métodos em quatro classes distintas, como RetemImposto, ProcessaEstoque, Transferencia e Confirmacao.

À medida que foi necessário, o código era refatorado.

 Após a quebra de um comportamento em diversas partes, é necessário juntar esses comportamentos novamente. Composição (composition) é esta união através da utilização de alguma prática de design, como no caso visto anteriormente, no qual o polimorfismo permite trabalhar de maneira uniforme com partes que executam tarefas distintas.

Um método que apresente um corpo com um número razoável de branches (como ifs e switches), ou que não permita a compreensão imediata de seu comportamento, pode ser refatorado para facilitar sua manutenção de Orientação a Objetos bem o código interno da classe mãe, o que é visto como uma quebra de encapsulamento.

 Podemos enxergar este problema em um exemplo encontrado no pacote java.util, com Properties e Hashtable.

A classe Properties herda de Hashtable e, portanto, instâncias de Properties possuem disponíveis métodos de Hashtable.

Mas, muitas vezes, esses métodos não fazem sentido, como no caso da Properties que lida apenas com Strings.

A quebra aparece quando temos uma instância de Properties e invocamos o método put(Object, Object), em vez de setProperty(String, String), podendo passar um Object qualquer como argumento.

Nesse caso, ao invocar posteriormente o método getProperty(String), recebemos um inesperado null.

 Não há como evitar que alguém invoque o método que trabalha com Object, a não ser documentando a respeito, como ocorre no javadoc dessa classe.

 Ter de garantir condições apenas através do javadoc é um contrato muito fraco, em especial dizendo que tal método não deve ser invocado com determinados tipos de objetos, algo que, em Java, poderia ser feito através da tipagem estática.

 Herança é comumente citada em cenários de reúso de código, mas não é a única solução.

 Usar composição permite reaproveitamento de código sem o efeito indesejado da quebra de encapsulamento.

Para que a classe Properties reaproveitasse os recursos já existentes em Hashtable com composição bastaria um atributo Hashtable privado, e o método setProperty delegaria a invocação para o hashtable.put.

Dessa maneira, expomos apenas os métodos que desejamos, sem possibilitar que fosse invocado o hashtable.put diretamente, nem que Properties pudesse ser passada como argumento para alguém que espera uma Hashtable.

 Melhor ainda, com o surgimento da API de Collections,  a implementação poderia ser facilmente trocada por algum Map sem causar problemas aos usuários da classe.

O uso abusivo de herança ocorre em diversos frameworks e APIs.

O Struts 1 é um exemplo deste uso e de seus diversos problemas relacionados; somos instruídos a estender Action e, ao mesmo tempo, a tomar muito cuidado com seu ciclo de vida, principalmente ao sobrescrever alguns métodos-chave dessa classe.

 Em linguagens com suporte a mixin, como Ruby, o acoplamento com as classes pode gerar complicações ainda maiores, que só serão percebidas em tempo de execução.

O problema da herança aparece, mesmo que mais sutilmente, no uso de classes abstratas para aplicar patterns, como o template method.

O novo método init(), sem parâmetros, deve ser reescrito; ele é invocado pelo próprio init(ServletConfig) após o ServletConfig ser guardado em um atributo.

Dentro de um init() reescrito podemos obter acesso ao ServletConfig através do getter da classe mãe, que agora estará corretamente atribuído.

Mesmo assim, em razão da tomada de decisão original na API de servlet, o desenvolvedor ainda deve conhecer como esses métodos funcionam na classe mãe, pois só assim saberá de todos os cuidados que são necessários.

Mas nem tudo é negativo. Todo esse design de servlets tem como objetivo principal trazer o polimorfismo e uma interface de uso uniforme para as servlets serem chamadas pelo container. Contudo, em Java, é possível usar interface para polimorfismo, sem os pontos negativos da herança como quebra de encapsulamento e alto acoplamento.

A API de servlets poderia ter usado um design baseado em interfaces com um strategy pattern por exemplo, evitando a herança.

Ao substituir a herança por interface, continuamos com o benefício do polimorfismo.

 Mas herança ainda traz outro grande benefício, o reaproveitamento de código, algo que interfaces puras não fazem.

Podemos então usar interfaces com composição, obtendo substitutos para todos os benefícios de herança sem correr o risco de cair na armadilha da quebra de encapsulamento e alto acoplamento.

 Repare que, desta forma, o acoplamento é bem menor, nenhuma das classes precisa conhecer o funcionamento interno das outras.

 Porém, se for necessário o uso de herança, alguns cuidados são importantes para minimizar a possível quebra de encapsulamento.

 Joshua Bloch, no Effective Java, fala de Design for Inheritance, com diversas práticas como evitar invocações entre métodos públicos, para que a sobrescrita de um não mude o comportamento de outro.

 Ao mesmo tempo que desejamos evitar herança, temos interesse em permitir mudança no nosso comportamento sem a necessidade de alterar ou copiar o código original.

Ao analisar a fundo as implementações atuais de Session e EntityManager do Hibernate, elas não retornam nem ArrayList, nem LinkedList, nem nenhuma coleção do java.util, e, sim, implementações de listas persistentes de pacotes do próprio Hibernate.

 Isto é possível, novamente, pelo desacoplamento provido pelo uso das interfaces.

 Além disso, o retorno das consultas com JPA e Hibernate são List, para deixar claro ao usuário que a ordem é importante.

 Manter a ordem de inserção e permitir acesso aleatório são características do contrato de List e são importantes para o resultado de consultas, pois podem definir uma ordenação (order by), uma ótima justificativa para optar por uma interface mais específica, e não usar Iterable ou Collection.

Nas principais APIs do Java, é fundamental programar voltado à interface.

Caso contrário, esse método poderia, e deveria, receber uma referência a InputStream, ficando mais flexível e podendo receber os mais diferentes tipos de streams, como argumento, que provavelmente não foram previamente imaginados.

Utilize sempre o tipo menos específico possível.

Repare que, muitas vezes, classes abstratas trabalham como interfaces, no sentido conceitual de orientação a objetos.

Classes abstratas possuem a vantagem de se poder adicionar-lhes um novo método não abstrato, sem quebrar o código já existente.

Já com o uso de interfaces(aqui, pensando na palavra-chave do Java), a adição de qualquer método acarretará a quebra das classes que a implementam.

Programe voltado à interface, não à implementação Casa do Código interfaces nunca definem nenhuma implementação, a vantagem é que o código está sempre desacoplado de qualquer outro que as utilize.

Isso muda com os polêmicos extension methods do Java 8, permitindo escrever uma implementação padrão nas interfaces, possibilitando suas evoluções, ao mesmo tempo que minimiza a quebra de compatibilidade.

Sempre que encontramos um código trabalhando com conexões de banco de dados, vemos referências à interface Connection, e nunca diretamente a MySQLConnection, OracleConnection, PostGreSQLConnection, ou qualquer outra implementação de um driver específico, apesar de esta possibilidade existir.

Desta forma, fica muito fácil trocar a implementação sem modificar todo o restante do código. Isso ocorre graças ao desacoplamento provido pelo uso de interfaces.

No caso do JDBC, essa escolha por uma implementação está centralizada na classe concreta DriverManager, que aqui age como uma factory.

O uso exagerado de reflection para invocar métodos dependendo de algumas condições pode ser muitas vezes substituído por interfaces.

Assim, a decisão de qual método invocar é deixada para a invocação virtual de método que o polimorfismo promove, diminuindo bastante a complexidade e aumentando a manutenibilidade, além de algum ganho de performance. Apesar de simples, existem seis possibilidades diferentes de execução do método, além de ele misturar diversos comportamentos que não possuem relação, isto é, responsabilidades diferentes para uma única classe: impostos, estoques, transferências e e-mails.

Tal comportamento pode ser composto por diversas partes menores e, para tanto, refatorações pequenas podem ser executadas.

 A mais simples seria a extração de quatro métodos, uma solução que simplifica o código atual, mas não aumenta sua coesão.

 É possível aumentar a coesão da classe extraindo tais métodos em quatro classes distintas, como RetemImposto, ProcessaEstoque, Transferencia e Confirmacao.

À medida que foi necessário, o código era refatorado.

 Após a quebra de um comportamento em diversas partes, é necessário juntar esses comportamentos novamente. Composição (composition) é esta união através da utilização de alguma prática de design, como no caso visto anteriormente, no qual o polimorfismo permite trabalhar de maneira uniforme com partes que executam tarefas distintas.

Um método que apresente um corpo com um número razoável de branches (como ifs e switches), ou que não permita a compreensão imediata de seu comportamento, pode ser refatorado para facilitar sua manutenção de Orientação a Objetos bem o código interno da classe mãe, o que é visto como uma quebra de encapsulamento.

 Podemos enxergar este problema em um exemplo encontrado no pacote java.util, com Properties e Hashtable.

A classe Properties herda de Hashtable e, portanto, instâncias de Properties possuem disponíveis métodos de Hashtable.

Mas, muitas vezes, esses métodos não fazem sentido, como no caso da Properties que lida apenas com Strings.

A quebra aparece quando temos uma instância de Properties e invocamos o método put(Object, Object), em vez de setProperty(String, String), podendo passar um Object qualquer como argumento.

Nesse caso, ao invocar posteriormente o método getProperty(String), recebemos um inesperado null.

 Não há como evitar que alguém invoque o método que trabalha com Object, a não ser documentando a respeito, como ocorre no javadoc dessa classe.

 Ter de garantir condições apenas através do javadoc é um contrato muito fraco, em especial dizendo que tal método não deve ser invocado com determinados tipos de objetos, algo que, em Java, poderia ser feito através da tipagem estática.

 Herança é comumente citada em cenários de reúso de código, mas não é a única solução.

 Usar composição permite reaproveitamento de código sem o efeito indesejado da quebra de encapsulamento.

Para que a classe Properties reaproveitasse os recursos já existentes em Hashtable com composição bastaria um atributo Hashtable privado, e o método setProperty delegaria a invocação para o hashtable.put.

Dessa maneira, expomos apenas os métodos que desejamos, sem possibilitar que fosse invocado o hashtable.put diretamente, nem que Properties pudesse ser passada como argumento para alguém que espera uma Hashtable.

 Melhor ainda, com o surgimento da API de Collections,  a implementação poderia ser facilmente trocada por algum Map sem causar problemas aos usuários da classe.

O uso abusivo de herança ocorre em diversos frameworks e APIs.

O Struts 1 é um exemplo deste uso e de seus diversos problemas relacionados; somos instruídos a estender Action e, ao mesmo tempo, a tomar muito cuidado com seu ciclo de vida, principalmente ao sobrescrever alguns métodos-chave dessa classe.

 Em linguagens com suporte a mixin, como Ruby, o acoplamento com as classes pode gerar complicações ainda maiores, que só serão percebidas em tempo de execução.

O problema da herança aparece, mesmo que mais sutilmente, no uso de classes abstratas para aplicar patterns, como o template method.

O novo método init(), sem parâmetros, deve ser reescrito; ele é invocado pelo próprio init(ServletConfig) após o ServletConfig ser guardado em um atributo.

Dentro de um init() reescrito podemos obter acesso ao ServletConfig através do getter da classe mãe, que agora estará corretamente atribuído.

Mesmo assim, em razão da tomada de decisão original na API de servlet, o desenvolvedor ainda deve conhecer como esses métodos funcionam na classe mãe, pois só assim saberá de todos os cuidados que são necessários.

Mas nem tudo é negativo. Todo esse design de servlets tem como objetivo principal trazer o polimorfismo e uma interface de uso uniforme para as servlets serem chamadas pelo container. Contudo, em Java, é possível usar interface para polimorfismo, sem os pontos negativos da herança como quebra de encapsulamento e alto acoplamento.

A API de servlets poderia ter usado um design baseado em interfaces com um strategy pattern por exemplo, evitando a herança.

Ao substituir a herança por interface, continuamos com o benefício do polimorfismo.

 Mas herança ainda traz outro grande benefício, o reaproveitamento de código, algo que interfaces puras não fazem.

Podemos então usar interfaces com composição, obtendo substitutos para todos os benefícios de herança sem correr o risco de cair na armadilha da quebra de encapsulamento e alto acoplamento.

 Repare que, desta forma, o acoplamento é bem menor, nenhuma das classes precisa conhecer o funcionamento interno das outras.

 Porém, se for necessário o uso de herança, alguns cuidados são importantes para minimizar a possível quebra de encapsulamento.

 Joshua Bloch, no Effective Java, fala de Design for Inheritance, com diversas práticas como evitar invocações entre métodos públicos, para que a sobrescrita de um não mude o comportamento de outro.

 Ao mesmo tempo que desejamos evitar herança, temos interesse em permitir mudança no nosso comportamento sem a necessidade de alterar ou copiar o código original.

HTML E CSS design and build websites

resumo pag. 1-20

O livro começa com uma pergunta retórica se é dificil aprender css e html e para tornar mais fácil de aprender, o livro foi feito desde o zero por dois escritores.
O livro foca-se no código que é preciso usar 90% do tempo e foi omitido o código que não é necessário.
Também acrescentou informações práticas sobre tópicos mais frequentes sobre, por exemplo, como preparar imagens, áudio e vídeo para a web, como abordar a concepção e construção de um novo site, como melhorar seus rankings nos motores de busca, e como usar o Google Analytics para aprender sobre os visitantes do seu site.
No trabalho, quando as pessoas olham para a tela e vê-lo cheio de código, é comum para obter um comentário sobre isso, olhar muito complicado ou quão inteligente deve ser para compreendê-lo.
os designers podem criar sites mais atraentes e utilizáveis, editores de sites podem criar melhores conteúdos, os comerciantes podem comunicar-se com o seu público de forma mais eficaz, e os gerentes podem encomendar locais para melhorar e tirar o melhor proveito das suas equipas.
1: HTML Vamos passar o primeiro capítulo olhando como HTML é usado para criar páginas web.
restante desta seção apresenta as marcas que temos à disposição para criar páginas web, agrupados em capítulos sobre: texto, listas, links, imagens, tabelas, formulários, vídeo e áudio flash, e elementos diversos.
2: css Começamos esta seção com um capítulo que explica como CSS usa regras para permitir que o controle, o estilo e layout de páginas da web.
Essas propriedades geralmente caem em uma das duas categorias: Apresentação: Como controlar coisas como a cor do texto, as fontes que se deseja usar e o tamanho dessas fontes, como adicionar cores de fundo de páginas (ou partes de uma página), e como adicionar imagens de fundo.
Finalmente, acabamos por olhar para tópicos que ajudarão você uma vez que se constroi um site, como colocá-lo na web, Search Engine Optimization e usar analytics software para rastrear quem vem para o site e o que eles estão a olhar.
como as pessoas acessam a web Antes de olharmos para o código usado para construir websites é importante considerar as diferentes maneiras em que as pessoas acedem á web e esclarecer algumas terminologias.
Os fabricantes de software lançam regularmente novas versões de navegadores com novos recursos e apoiar novas adições às línguas.
Servidores Web – Quando perguntamos ao seu navegador para uma página web, o pedido é enviado através da Internet para um computador especial conhecido como servidor web que hospeda o site.
Algumas grandes empresas executar seus próprios servidores web, mas é mais comum usar os serviços de um hospedagem na web empresa que cobrar uma taxa para hospedar o site.
As pessoas estão acedendo sites em uma gama cada vez maior de dispositivos, incluindo computadores desktop, laptops, tablets e telefones celulares.
Da mesma forma que muitos países têm legislações que exigem edifícios públicos sejam acessíveis a pessoas com deficiência, muitas leis também foram passados que exigem sites ser acessível a pessoas com deficiência.
interessante notar que tecnologias similares àquelas utilizadas por leitores de tela também estão sendo usado em outras áreas onde as pessoas são incapazes ler uma tela, como quando eles estão dirigindo ou jogging.
o que nó vimos quando estamos a olhar para um site, o mais provável é que o navegador estará recebendo HTML e CSS a partir do servidor web que hospeda o site.
A maioria das páginas da web também incluem conteúdo extra, como imagens, áudioe vídeo. particular aqueles que são atualizados regularmente e usar um sistema de gerenciamento de conteúdo (CMS), ferramentas para blogs, ou software de e-commerce – muitas vezes fazem uso de tecnologias mais complexas no servidor web, mas estas tecnologias são realmente utilizados para produzir HTML e CSS que é então enviado para o navegador.
Maiores locais mais complexos como estes podem utilizar um banco de dados para armazenar dados e linguagens de programação como PHP, ASP. Net, Java, Ruby ou no servidor web, mas não precisamos saber essas tecnologias para melhorar o que o usuário vê.
Desde que a web foi criado pela primeira vez houve várias versões do HTML e CSS – cada um pretende ser uma melhoria em relação à versão anterior.
Embora não tinha sido finalizado, muitos navegadores já estavam apoiando algumas características dessas línguas e um monte de pessoas estavam usando a última versão do código em seus sites.
Para construir em versões anteriores destes idiomas, aprender estes meios, também temos de ser capazes de compreender as versões anteriores dos mesmos.
Como os sites são criados todos os sites usam HTML e CSS, mas os sistemas de gerenciamento de conteúdo, software de blogging, e plataformas de e-commerce muitas vezes adicionar mais algumas tecnologias na mistura.
Como as páginas usam a estrutura- Consideramos as histórias que le-mos no jornal: cada história conterá um título, algum texto e, às vezes, algumas imagens. Se o artigo for um pedaço longo, pode haver subtítulos que dividam a história em seções ou citações de pessoas envolvidas. A estrutura do jornal ajuda os leitores a compreender as histórias.
Quando uma notícia é visualizada online, a estrutura é a mesma (mas podem estar disponíveis recursos de áudio ou vídeo). Isso pode ser visto à direita com uma cópia de um jornal ao lado do artigo relevante em seu site.
Agora consideramos um tipo de documento muito diferente – uma espécie de segurança. Muitas vezes, os formulários de segurança incluem títulos para diferentes seções, e cada seção possui uma lista de perguntas com as áreas correspondentes.

LINUX BASICS FOR HACKERS

Resumo página o a 24

O meu primeiro resumo do livro então, para já a superar as expectativas tem uma abordagem completamente diferente do que estava á espera foi a melhor escolha que podia ter feito.
O livro começa com uma introdução a falar um pouco dos temas que vão ser abordados nos diferentes capítulos desde 1 ao 17 aliciando logo a leitura e a curiosidade do que vem ai para a frente. Depois de uma breve introduçao o livro começa por abordar temas sensivies e a expressar na opiniao do escritor o que para ele é hacking de forma ético, abordando temas como testes de penetração e ainda toca na espionagem e no uso a fins militares.
Até que o escritor começa a entrar no mundo do Linux, ai percebemos o porque dos hackers usarem esse sistema operativo em específico, fala da sua transparência, do controlo granular que ele oferece, das ferramentas escritas e já implementadas dentro dele e do futuro que tem para frente a explocar entre Linux/Unix. Agora sim a parte que me suprende deparo-me da pagina 10 á pagina 24 algo que nunca tinha visto num livro, um tutorial passo a passa com a maior clareza, desde imagens, linhas de codigo sem faltar nada só ler seguir e implementar para a instalçao da virtual machine e logo de seguida do kali para podermos assim estar prontos para começar a nossa jornada emocionante no mundo do hacking, não poderia ter tido um melhor começo!!

Introdução ao Design de Interfaces

prefácio pág(15-18)

pág(15-16)

Apesar dos fantásticos avanços tecnológicos dos últimos cinquenta anos, vivemos numa era comparativamente atrasada. De facto os mesmos aparelhos que apreciamos, são muitas das vezes os nossos obstáculos no dia-à- dia.

Os dispositivos que se tornaram indispensáveis no nosso quotidiano, que usamos nas nossas comunicações e atividades. De uma forma que não encontrada décadas atrás. E sabemos que de acordo com os mesmos podem e devem melhorar e muito para resolvermos os problemas diários.

A disciplina de Interfaces Pessoa – Máquina ou Humano – Computador não é recente, visto que existe desde a década 1980, quando Association for Computing Machinery(ACM) nasceu em 1984.

Em que consistem as Interfaces Pessoa – Máquina (IPM)? Esta área abrange muitas que disciplinas que incluem: o desenho, o projecto, a realização e a avaliação de sistemas interativos ou implementos desenhados para serem usados por seres humanos.

A interacção e técnicas para avaliar exige que, o engenheiro tenha uma grande dose de análise e pensamento crítico. Os utilizadores têm cada um o seu ponto de vista para bons desenhos e padrões dos mesmos.

Computação : Interação Humano Computador 03º Resumo

Leitura paginas 17-27

  1. Padrões de avaliação da qualidade da interface homem-computador:
    1. Tempo de estudo:
      • Mede o tempo que um usuário típico leva para aprender como usar o sistema para executar uma tarefa específica.
      • Importante para economizar tempo e recursos de treinamento.
      • Exemplo: A simplicidade do motor de busca Google otimiza o tempo de aprendizagem da pesquisa na Internet.
    2. Desempenho:
      • Medir o tempo que um usuário típico leva para realizar atividades representativas do domínio do aplicativo.
      • Relevante para a eficiência operacional e competitividade da empresa
      Exemplo: Horário de Atendimento para Operadores de Tele marketing Utilizando Programas Específicos
    3. Taxa de erro:
      • Avalie a frequência com que os usuários cometem erros durante as interações.
      • Os erros podem ter impactos significativos e variar em gravidade.
      • Estratégias para melhorar a relação entre desempenho e erros são críticas.
    4. Tempo de retenção:
      • Medir por quanto tempo os usuários retêm o conhecimento de como usar o aplicativo.
      • Relevante para estudo, tempo e frequência de uso.
      • Importante para aplicações pouco frequentes, concebido para aumentar a eficiência.
    5. Satisfação subjetiva:
      • Avalie a experiência geral do usuário ao usar o aplicativo para executar tarefas específicas.
      • Obtido através de questionário de satisfação pós-uso.
      • Exemplo: Medição utilizando escalas Likert durante sessões de debriefing

Ao aplicar esses critérios, é fundamental que os projetistas façam escolhas maduras, compreendendo o impacto de suas decisões na aceitação do projeto pelo usuário. Recomenda-se que os usuários participem ativamente neste processo de tomada de decisão para garantir que as seleções atendam às necessidades do grupo de usuários.

  1. Inclusão da diversidade humana:
    1. Habilidades físicas e ambiente de trabalho:
      • Considere desafios de design de interface para uma variedade de habilidades percetivas, cognitivas e motoras.
      • A antropometria (estudo das dimensões do corpo humano) é essencial para o ajuste dos equipamentos.
      • A ajustabilidade dos equipamentos (teclado, monitor) é fundamental para atender às necessidades dos diferentes usuários.
    2. Diferenças de personalidade:
      • O género afeta as preferências, especialmente em vídeo Jogos.
      • A psicologia define diferentes tipos de personalidade.
      • Compreender estas diferenças é útil para programas educacionais, artísticos e de entretenimento.
    3. Diferença cultural:
      • A globalização exige compreensão para construir produtos que possam ser usados ​​em diferentes culturas.
      • A localização é crítica para a adaptação em diferentes países.
      • Estudos de usabilidade são recomendados para garantir a aceitação intercultural.
    4. Usuários idosos:
      • A tecnologia trouxe enormes benefícios para “tempos melhores”.
      • Adaptações físicas e psicológicas necessárias para lidar com as mudanças relacionadas com a idade.
      • Um mercado crescente e o sucesso de aplicações que entendem as necessidades deste grupo.

paginas 31 á 42

2.3.2 O UTILIZADOR E O FORMATO DIGITAL

Uso de cores complementares saturadas
As cores complementares são o inverso umas das outras nos ecrãs. Essas
cores, quando altamente saturadas e posicionadas ao lado uma da
outra, podem criar situações de difícil percepção ou de concentração.
Saturação excessiva
As cores altamente saturadas tendem a parecer berrantes e a chamar
muita atenção. De uma forma moderada, as cores saturadas podem
ser usadas em pequenas amostras para capturar a atenção do utilizador, mas devem ser sempre usadas com moderação.
Contrastes inadequados
Quando as cores dos objectos diferem das cores do fundo apenas na
tonalidade, mas não na saturação ou brilho, tornam-se difíceis de
perceber. Os objectos e o fundo devem variar em brilho ou saturação.
O autor refere ainda que, o texto de cor em fundos com cor também
devem ser evitados, sempre que possível.
Falta de atenção ao Daltonismo
É necessário ter algum cuidado ao usar tons de vermelho e verde (em
particular), para comunicar informações importantes. As outras cores
usadas devem ser consideradas em saturação ou o brilho para que
este tipo de utilizadores as possam distinguir umas das outras. Se a
conversão para tons de cinza da paleta de cores utilizada for facilmente distinguível, os utilizadores daltónicos devem ser capazes de
distinguir a versão das cores.

2.3.2.1 OBJECTIVOS DO UTILIZADOR

Na contemporaneidade, o foco recai no utilizador, considerado um conjunto de necessidades e deficiências. Sua dinâmica assemelha-se à de um paciente ou criança, demandando proteção, análise e controle, sujeito a investigações e testes.

A evolução digital intensificou a exigência do utilizador, levando-o a especular sobre suas buscas e resultados. Apesar disso, a pergunta de Heller destaca a impaciência dos leitores da web em comparação com os leitores de impressão. Contrariando a suposição de dificuldade na leitura em telas digitais, a HCI demonstra a eficiência da leitura em texto preto nítido em fundo branco, tanto em telas quanto em páginas impressas.

A transformação tecnológica substituiu os formatos tradicionais por versões digitais, como livros e jornais, tornando o utilizador mais seletivo e impaciente devido ao volume de informações. A análise de Bierut, Drentell e Heller revela que a impaciência do leitor digital deriva de hábitos culturais e expectativas distintas em relação à produtividade e pesquisa, contrastando com os leitores de impressão que buscam um modo mais contemplativo.

2.3.3 PROCESSOS DE DESENVOLVIMENTO (WEBSITES, APLICAÇÕES DIGITAIS)

Os objetivos do utilizador desempenham um papel crucial no design de produtos digitais, conforme destaca Alan Cooper. A perfeição tecnológica sozinha não é suficiente; é essencial compreender e atender aos objetivos dos utilizadores para determinar a importância das atividades de design. Cooper ressalta que o design deve se alinhar aos objetivos do utilizador, indo além de simples considerações tecnológicas e tarefas.

Ao analisar produtos digitais no mercado, Cooper identifica falhas comuns, como fazer os utilizadores parecerem estúpidos, permitir erros graves, exigir esforço excessivo para operações eficientes e não proporcionar uma experiência agradável. Muitas vezes, objetivos e expectativas do utilizador são negligenciados por motivos comerciais, resultando em experiências digitais desagradáveis.

Empresas estão reconhecendo a importância de compreender e adaptar-se aos utilizadores, tentando melhorar a amigabilidade de suas aplicações. Contudo, Cooper destaca que, frequentemente, as mudanças são ineficazes devido à abordagem tradicional, onde o design de interfaces ocorre após a programação, perdendo a oportunidade de ajustar o produto conforme as necessidades do utilizador. Cooper compara essa abordagem ao planeamento de um prédio, enfatizando a importância de definir o design desde o início do desenvolvimento do produto digital.

2.3.3.1 ARQUITECTURA DE INFORMAÇÃO E SISTEMA DE NAVEGAÇÃO

A Arquitetura de Informação, segundo Robin Landa, é a organização cuidadosa do conteúdo em websites ou produtos digitais, estabelecendo uma ordem hierárquica para facilitar a navegação do utilizador. Essa organização não é linear, permitindo ao utilizador alcançar rapidamente seu destino de qualquer ponto no website ou produto digital.

Landa destaca a importância da clareza e organização da informação para proporcionar uma experiência positiva, especialmente em websites com excesso de tipografia, como revistas online, arquivos, museus e sites governamentais.

A Arquitetura de Informação guia o designer na composição geral do website ou produto digital, sendo a interface gráfica para acessar a informação parte crucial dessa arquitetura, chamada de Sistema de Navegação. Websites devem ter vários níveis de navegação, incluindo portal navegacional, navegação global, navegação secundária e navegação única de páginas web.

O Sistema de Navegação compreende caminhos visuais e digitais, geralmente representados por tabs e botões. Esses elementos devem ser limpos, simples e consistentes para que o utilizador reconheça links clicáveis e se mova eficientemente pelo website.

Lupton acrescenta a descrição de vários tipos de menus, como o persistente, suspenso, deslizante e separadores, cada um desempenhando funções específicas na navegação.

Embora Landa se refira principalmente a websites, a Arquitetura de Informação é essencial em qualquer produto digital. As regras aplicadas aos websites, incluindo os sistemas de navegação, são igualmente relevantes para garantir uma navegação clara e simples entre as funcionalidades de produtos digitais.

2.3.4 OS ELEMENTOS E OS PRINCÍPIOS DO GRAFISMO NO DESIGN DE INTERFACES
2.3.4.1 COR

A cor desempenha um papel fundamental no design de interfaces, influenciando sentimentos, experiências e significados. A escolha cuidadosa das cores em projetos, conforme Wheeler destaca, exige compreensão da teoria das cores e habilidade em comandar a consistência e o significado na amplitude da multimédia.

A cor é uma ferramenta poderosa de informação e gráficos no design de interfaces digitais, onde os utilizadores atribuem significados ao seu uso, segundo Cooper. Sistemas como Hexadecimal, RGB e RGBA são empregados para identificar cores com precisão no ambiente digital.

Cooper ressalta a importância de usar a cor com moderação, integrando-a bem aos outros elementos da linguagem visual em interfaces. A cor pode chamar a atenção para elementos importantes, indicar relacionamentos e comunicar status ou informações.

Algumas formas incorretas de utilizar a cor no design de interfaces incluem o excesso de cores, que pode tornar a experiência do utilizador lenta e dispersa, e a falta de integração da cor com outros elementos visuais, impedindo uma comunicação eficaz. É crucial para o designer considerar o equilíbrio e a harmonia na escolha e aplicação das cores para garantir uma experiência visual eficiente.

Resumo das páginas 17 a 25 do livro “Sistema Operativos e interfaces Gráficas MS-DOS e Windows”

2. Ambiente Windows

A partir da página 17, o livro começa a tratar do ambiente Windows. O ambiente Windows é um conjunto de componentes que permitem aos utilizadores interagir com o sistema operativo Windows.

Componentes do ambiente Windows

Os componentes do ambiente Windows incluem:

  • A interface gráfica de utilizador (GUI)
  • A área de trabalho
  • A barra de tarefas
  • O menu Iniciar
  • O explorador de ficheiros
  • A barra de título
  • As janelas
  • As caixas de diálogo

A interface gráfica de utilizador (GUI)

A GUI é o componente mais importante do ambiente Windows. A GUI permite aos utilizadores interagir com o sistema operativo usando um mouse e ícones.

A GUI do Windows é dividida em várias áreas, incluindo:

  • A área de trabalho
  • A barra de tarefas
  • O menu Iniciar

A área de trabalho

A área de trabalho é a área principal do ambiente Windows. A área de trabalho é onde os utilizadores colocam os ícones dos seus programas e ficheiros.

A barra de tarefas

A barra de tarefas é uma barra que fica na parte inferior do ecrã. A barra de tarefas contém o botão Iniciar, os ícones das aplicações abertas e os ícones dos programas que estão a correr em segundo plano.

O menu Iniciar

O menu Iniciar é um menu que permite aos utilizadores aceder a todos os programas e funcionalidades do sistema operativo Windows.

O explorador de ficheiros

O explorador de ficheiros é um programa que permite aos utilizadores visualizar e gerir os seus ficheiros e pastas.

A barra de título

A barra de título é a barra que fica na parte superior de uma janela. A barra de título contém o título da janela, o botão minimizar, o botão maximizar/minimizar e o botão fechar.

As janelas

As janelas são os componentes que permitem aos utilizadores visualizar e interagir com os programas.

As caixas de diálogo

As caixas de diálogo são os componentes que permitem aos utilizadores fornecer informações ou escolher opções aos programas.

Interação com o ambiente Windows

Os utilizadores podem interagir com o ambiente Windows usando o mouse, o teclado ou uma combinação de ambos.

Usando o mouse

Os utilizadores podem usar o mouse para clicar, arrastar e soltar itens no ambiente Windows.

Usando o teclado

Os utilizadores podem usar o teclado para navegar pelo ambiente Windows usando os seguintes atalhos:

  • Tecla Windows: abre o menu Iniciar
  • Tecla Tab: alterna entre os itens da barra de tarefas
  • Tecla Alt: abre o menu de contexto

Usando uma combinação de mouse e teclado

Os utilizadores podem usar uma combinação de mouse e teclado para interagir com o ambiente Windows usando os seguintes atalhos:

  • Tecla Windows + E: abre o explorador de ficheiros
  • Tecla Windows + D: alterna entre o ambiente de trabalho e a barra de tarefas

Conclusão

As páginas 17 a 25 do livro “Sistema Operativos e interfaces Gráficas MS-DOS e Windows” fornecem uma introdução ao ambiente Windows. O livro explica os componentes do ambiente Windows e como os utilizadores podem interagir com ele.

Título: La iteración persona-ordenador

Página 102-168

Resumen

Capítulo 2: El factor humano

Los seres humanos tienen una amplia gama de capacidades y limitaciones, como puede ser pérdidas de concentración, cambios de carácter, motivación, emociones, prejuicios, miedos, errores y fallos de juicio. Al mismo tiempo, pueden responder rápidamente a estimulos, resolver problemas complejos, coordinar acciones con otras actividades, etc.

En el pasado, los diseñadores no consideraban el factor humano como algo importante, ya que asumían que los usuarios podrían aprender y utilizar los sistemas y aplicaciones sin problemas. Sin embargo, esto suele ser complicado y frustante. Por lo tanto, es importante considerar los aspectos humanos de la informática como el sistema cognitivo que nos ayuda a diseñar interfaces que se ajusten mejor a los modelos cognitivos de las personas.

  1. Niveles de explicación de la conducta

La interacción entre las personas y los sistemas informáticos pueden analizarse desde diferentes niveles, en este caso vamos a ver el marco de referencia establecido por CAÑAS Y WAERN.

En el nivel socio-cultural, se estudian temas como la influencia de la tecnología en la sociedad y viceversa. El siguiente nivel se centra en la interacción en tareas de cooperación entre varias personas utilizando sistemas informáticos conocidos como CSCW (Computer-Supported Cooperative Work) que facilitan así el trabajo en equipo.

El tercer nivel se enfoca en la interacción de una persona con un sistema informático y aborda aspectos del sistema cognitivo humano. Un tema fundamental es el de los “Modelos Mentales”, comprendiendo cómo los usuarios adquieren y almacenan en su memoria un modelo del sistema con el que interactúan.

Dentro de los sistemas cognitivos, existen dos componentes importantes que son: sistema perceptivo, que se refiere a las características clave de las interfaces visuales y auditivas; y sistema sensorio-motor.

Todos los aspectos explicados los podemos encontrar en la siguiente tabla:

  • Cognición individual y distribuida

Para comprender la interacción entre las personas y los sistemas interactivos, es fundamental emplear la Psicología Cognitiva, que se enfoca en el procesamiento de información humana, ya que proporciona datos y teoría sobre las capacidades y limitaciones cognitivas humanas, incluyendo la percepción, almacenamiento de la información y resolución de problemas

El término de “cognición” se refiere a la adquisición y uso del conocimiento, y podemos distinguir: Cognición Mental o Individual y Cognición Distribuida o Colectiva, esto es fundamental para el diseño de sistemas y así poder ajustarse a las capacidades.

Cognición Individual o Mental

Los modelos cognitivos que explican la interacción entre las personas y los sistemas interactivos siguen el esquema de procesamiento de información de la Psicología Cognitiva.

Un modelo general propuesto por WICKENS considera que el ser gumano tiene un sistema cognitivo con sistema sensoriales para extraer la información del ambiente, luego se analiza, la almacena en la memoria y la recupera para otro uso.

La memoria humana se divide en memoria operativa y memoria a largo plazo donde podemos distinguir: memoria declarativa que almacena hechos y memoria procedimental que almacena cómo realizar tareas. Los procesos atencionales controlan y distribuyen recursos mentales necesarios para procesar la información. Además, existen procesos de decisión que seleccionan respuestas y coordinan acciones motoras. Como podemos ver en el siguiente esquema:

Además, ha identificado siete actividades realizadas por un usuario para interactuar con un sistema que son:

  • Establecer un objetivo
    • Formar una intención
    • Especificar secuencias de acciones
    • Ejecutar la acción
    • Percibir el estado del sistema
    • Interpretar el estado
    • Evaluar el estado del sistema con respecto a los objetivos y a las Intenciones

Esto también lo podemos en el siguiente esquema:

Los modelos de interacción humano-ordenador, según HOWES deben considerar cuatro aspectos fundamentales:

  • Conducta: los modelos deben explicar y predecir la conducta de los usuarios, así como los datos experimentales obtenidos en las investigaciones. Por ejemplo, los usuarios aprenden de manera más fácil con menús e iconos que con comandos.
    • Conocimiento: es fundamental describir los conocimientos uqe los usuarios deben tener sobre la interfaz y la interacción para predecir su conducta. La propuesta de NEWELL define el conocimiento en términos de objetivos, operadores para lograr esos objetivos y métodos formados por secuencias de operadores.
    • Representación del Conocimiento: el conocimiento esta representado en el sistema y existen varios formalismos propuestos para esta representación, imponiendo restricciones sobre  cómo se adquiere y utiliza dicho conocimiento. Estas restricciones son cruciales para hacer predicciones sobre la conducta.
    • Aprendizaje: los usuarios deben aprender a utilizar la interfaz, por lo que los modelos cognitivos se centran en cómo ocurre este proceso. Es relevante considerar:
      • El tipo de mecanismo cognitivo propuesto para el aprendizaje.
      • El tipo de aprendizaje empleado, como aprendizaje con ejemplos o exploratorio.

Estos aspectos son esenciales para entender cómo los usuarios adquieren habilidades y conocimientos al interactuar con sistemas informáticos.

Cognición Distribuida o Colectiva

En el estudio de la interacción de grupos de personas con sistemas informáticos se aplica el concepto de ‘Cognición Distribuida’, por lo que las personas y los sistemas informáticos son considerados agentes dentro de un sistema común, prestando atención a la transferencia y transformación de información entre esos agentes.

Se estudia la distribución de información entre personas y ordenadores. Se exploran diversas aproximaciones a esta distribución, incluyendo la comunicación en paralelo, la comunicación jerárquica y la coordinación a través de artefactos comunes. Este cambio de enfoque, de considerar la cognición individual a ver al grupo como una unidad cognitiva, ha sido denominado ‘Perspectiva de la Persona Más’ por SALOMON.

HINSZ, TILLDALE y VOLLRATH propusieron un modelo general de procesamiento de información que se puede adaptar para explicar el procesamiento de información distribuida, se centra en entender cómo la información se comparte y se transforma entre las personas y los ordenadores, proporcionando una visión más completa de la interacción en sistemas complejos y altamente organizados.

En el modelo de ‘Cognición Distribuida’, se considera un espacio de trabajo limitado (similar a la Memoria Operativa en modelos individuales) que representa la unión de lo individual y lo compartido en un grupo donde se procesa la información para interpretarla y decidir las acciones a tomar. La interpretación de la información depende del contexto y del conocimiento previo de las personas involucradas en el grupo, algunos de los cuales son comunes, algunos deben ser compartidos explícitamente y otros son personales.

Dentro de este espacio de trabajo, la información externa es seleccionada y transformada mediante procesos atencionales y de codificación, estos son influenciados por el conocimiento previo y los resultados temporales. La codificación y recuperación del conocimiento previo están controladas por los objetivos actuales y continúan hasta que se deriva y ejecuta una acción relevante.

En un grupo, las personas pueden negociar objetivos, comunicar codificaciones y selecciones hasta que se alcanza un objetivo y una interpretación compartida de la situación, que no necesariamente es común para todos. Las acciones pueden ser comunes o distribuidas según la tarea. La información nueva resultante se utiliza en un nuevo ciclo de procesamiento. Este modelo implica un procesamiento secuencial de la información, donde los procesos se repiten hasta que se logra el objetivo, y se puede utilizar para analizar los procesos implicados en el procesamiento de la información en contextos grupales.

  • Arquitecturas cognitivas generales

En la Interacción Persona-Ordenador (IPO), los científicos cognitivos se enfrentan al desafío de explicar y predecir el comportamiento humano en tareas difíciles de descomponer en componentes independientes atribuibles a procesos perceptuales, atención, memoria o razonamiento. Por todo esto es difícil separar los componentes cognitivos como memoria o atención.

Siguiendo a NEWELL, se han desarrollado teorías generales que integran diversas estructuras y procesos cognitivos que tienen como objetivo hacer predicciones sobre una amplia gama de comportamientos, reconociendo la complejidad de los procesos cognitivos involucrados.

Arquitecturas Cognitivas relevantes

Las más importantes son: ACT-R, SOAR surgidas de la Ciencia Cognitiva para explicar la conducta humana en cualquier circunstancia y CCT (Cognitive Complexity Theory) surgida de la investigación ergonómica, fue propuesta para explicar la interacción de persona con un ordenador y se puede decir que es una adaptación de SOAR para IPO.

Por lo que SOAR Y CCT han dado lugar a la técnica de análisis de tareas mas importante para la IPO, llamada GOMS.

SOAR

La regla de producción, propuesta por NEWELL y SIMON, constituye la idea central sobre la cual se han construido numerosas arquitecturas teóricas en campos como la Inteligencia Artificial, la Ciencia Cognitiva y la Psicología Cognitiva, basandose en el concepto de reglas de producción, que estos autores demostraron como una descripción adecuada del sistema cognitivo humano y artificial.

Una regla de producción consta de dos partes: una condición y una acción. Si una condición se cumple, entonces el sistema lleva a cabo una acción. La condición puede ser externa o interna al sistema, mientras que la acción puede ser una respuesta motora o una operación mental. Estas reglas están almacenadas en la Memoria a Largo Plazo, y las condiciones son unidades de información almacenadas en la Memoria Operativa, que pueden ser de origen externo o interno.

En el modelo propuesto, la solución de un problema implica pasar de un estado inicial a un estado final deseado en el espacio del problema. Este proceso se logra mediante la aplicación secuencial de reglas de producción, donde cada regla se aplica en un paso y puede conducir a varios posibles estados intermedios. Los conceptos clave utilizados para describir este modelo son:

  • Objetivo: una situación deseada a la que se quiere llegar. Existen objetivos organizados en una jerarquía, con objetivos generales en niveles superiores y subobjetivos en niveles inferiores.
  • Estado: una estructura de datos que define una situación en el camino hacia el objetivo. Se habla de estado inicial, estados intermedios que son situaciones que surgen al moverse hacia el estado final y estado final (objetivo).
  • Operador: una función que transforma un estado en otro. Son acciones resultantes de la aplicación de una regla de producción.
  • Espacio del Problema: conjunto de estados y operadores disponibles para alcanzar el objetivo. La complejidad del problema determina las dimensiones

La información entra a través de los canales sensoriales y se almacena temporalmente en la Memoria Operativa (MO), donde contiene datos sobre los objetivos, estados y operadores del problema. La información permanente se almacena en la Memoria a Largo Plazo, también conocida como Memoria de Reconocimiento, que contiene patrones que deben ser reconocidos en la MO para aplicar reglas de producción. SOAR no distingue entre Memoria Declarativa y Memoria Procedimental; toda la información está en las reglas de producción. La Memoria de Preferencias almacena información recuperada de la Memoria a Largo Plazo y es procesada por un proceso de Decisión para determinar qué contenidos de la MO se modifican. Existe también una Memoria de Trazos donde se almacena información temporal.

En cada ciclo de procesamiento, estas reglas se comparan con los contenidos de la Memoria Operativa (MO). Si una regla cumple su condición, es decir, si la MO contiene los datos especificados en la condición de la regla, se coloca la acción correspondiente en la Memoria de Preferencias. Las acciones pueden ser actuaciones directas sobre el ambiente o modificaciones en la MO. Si varias reglas cumplen sus condiciones, se colocan en la Memoria de Preferencias con valores de preferencia. Un Proceso de Decisión elige qué acción llevar a cabo primero basándose en estos valores de preferencia.

Cuando hay situaciones de conflicto en la Memoria de Preferencias y no se puede elegir entre las acciones, se produce un impasse. Esto ocurre cuando el conocimiento en la Memoria Permanente es insuficiente para solucionar el problema. Para superar el impasse, SOAR crea subobjetivos para resolverlo. Analiza las condiciones y acciones que llevaron al impasse y crea nuevas reglas de producción basadas en estas experiencias. Estas nuevas reglas se añaden a la Memoria Permanente para evitar futuros impasses en situaciones similares.

RELACION de SOAR con GOMS

El modelo GOMS, propuesto por Card, Moran y Newell (CAR83), es una técnica de análisis de tareas en la interacción humano-computadora que se basa en la descomposición de las actividades del usuario en términos de:

  • Objetivos (Goals): representan las metas del usuario al interactuar con el ordenador. Estos objetivos pueden dividirse en subobjetivos más específicos.
    • Operadores (Operators): son las acciones que el usuario puede llevar a cabo en el sistema.
    • Métodos (Methods): son secuencias de subobjetivos y operadores que el usuario aprende para lograr un objetivo específico.
    • Reglas de selección (Selection rules): son reglas que determinan la secuencia más adecuada de subobjetivos y operadores cuando existen múltiples opciones para alcanzar un objetivo. Estas reglas ayudan a seleccionar el camino más eficiente para realizar una tarea.

GOMS se utiliza para analizar la estructura y la complejidad de las tareas de los usuarios, permitiendo una comprensión detallada de las acciones que los usuarios llevan a cabo durante la interacción con sistemas informáticos. Es especialmente útil para diseñar interfaces de usuario intuitivas y eficientes al identificar posibles cuellos de botella y áreas de mejora en el trabajo del usuario.

  • Sensación: los canales de entrada

En la interacción entre las personas y las computadoras, se produce un intercambio de información en el que el ordenador presenta datos en un formato específico que la persona debe captar a través de sus sentidos para su procesamiento. De manera similar, la persona transmite información al ordenador a través de sus sistemas de entrada.

Hasta hace poco, las interfaces se centraban principalmente en los formatos visuales y, en menor medida, en los formatos auditivos. El sentido visual ha sido el más explorado en Interacción Persona-Ordenador (IPO), seguido por el sentido auditivo. Sin embargo, recientemente, se han comenzado a diseñar interfaces que presentan información en otros formatos físicos.

Sistema visual

La visión es el proceso mediante el cual obtenemos información a partir de la energía electromagnética que llega a los ojos. Lo que percibimos visualmente es la luz, que es la porción del espectro electromagnético detectada.

Para que sea posible la recepción física de los estímulos visuales, son necesarias diversas estructuras anatómicas en el ojo. La primera capa que atraviesa la luz en su camino es la córnea, que es una capa transparente que se continúa con la esclerótica lateralmente. Después nos encontramos con la cámara anterior, que está entre la córnea y el cristalino y contiene un líquido transparente llamado humor vítreo.

En el proceso visual, la pupila, que es un agujero, regula la cantidad de luz que entra al ojo cambiando de tamaño. La luz luego pasa a través del cristalino o lente, cuya curvatura puede variar mediante los músculos ciliares, permitiendo que enfoquemos objetos a diferentes distancias, un fenómeno conocido como acomodación.

Finalmente, después de atravesar el humor vítreo, un fluido transparente que ocupa la mayor parte del volumen del ojo, las radiaciones luminosas llegan a la retina. En la retina, las células especializadas realizan la transducción, convirtiendo las imágenes en señales nerviosas en respuesta a la luz. Es importante destacar que las imágenes se forman de manera invertida en la retina, aunque el cerebro las interpreta correctamente.

En la retina, existen dos puntos cruciales: la fóvea, que es el punto de máxima visión, y el punto ciego, un área donde no hay visión debido a la salida del nervio óptico. El campo visual de un individuo se divide en dos partes: el semicampo visual izquierdo y el derecho. Los objetos del semicampo visual izquierdo se proyectan sobre las hemirretinas derechas, mientras que los del semicampo visual derecho se proyectan sobre las hemirretinas izquierdas. Existe una zona binocular en el centro donde los objetos se proyectan en ambos ojos. Además, hay dos zonas monoculares en los extremos del campo visual, donde los objetos se proyectan solo en un ojo, y estos se proyectarán del lado ipsilateral al ojo correspondiente. La presencia de zonas monoculares se debe a la ubicación de los ojos a los lados de la cabeza.

¿Cuáles son los aspectos del sistema visual que nos interesan desde el punto de vista de la IPO?

En psicología, se hace una distinción entre sensación y percepción. La sensación se refiere a la captación del estímulo físico y su transformación en impulso nervioso, mientras que la percepción implica asignar significado al estímulo que ha entrado en nuestro sistema cognitivo. Se habla de “percepción de formas” en lugar de “sensación de formas”.

En el sistema visual a nivel sensorio-motor, nos enfocaremos en dos temas fundamentales: el color y la iluminación. Estos temas se refieren a la cantidad y calidad de la luz que llega a la retina. Sin embargo, es importante tener en cuenta que la distinción entre sensación y percepción es más didáctica que real, ya que están intrínsecamente relacionadas.

  • Color: la percepción de los colores está relacionada con cómo la luz llega a la retina y es codificada por los fotorreceptores presentes en ella. La retina humana tiene dos tipos de fotorreceptores: los conos que son los responsables de la visión diurna y permiten realizar tareas visuales detalladas y los bastones que median la visión nocturna y son extremadamente sensibles a la luz, aunque menos precisos.

Existen tres tipos de conos con pigmentos sensibles a diferentes longitudes de onda.

Sin embargo, hay fenómenos visuales que esta teoría no puede explicar, como el Posefecto del color, donde se observan imágenes complementarias después de mirar una luz brillante durante un tiempo y luego retirarla. Para explicar este fenómeno, se propone el sistema de los procesos oponentes, que incluye tres sistemas de procesos:

  • Rojo-Verde: responde a longitudes de onda medias y puede percibirse como verde o rojo dependiendo de la longitud de onda.
    • Azul-Amarillo: responde a longitudes de onda cortas y largas, percibiéndose como azul o amarillo.
    • Acromático: responde a la cantidad de luz reflejada y determina los niveles de claridad (claro-oscuro) que percibimos.

La Teoría de los Procesos Oponentes explica los Posefectos del color, donde mirar fijamente un color durante un tiempo agota e inhibe el sistema de ese color, lo que permite que se vea el color opuesto. Esta teoría tiene implicaciones importantes para la Interacción Persona-Ordenador (IPO). Se deben evitar combinaciones de colores opuestos en pantallas, especialmente en pantallas activas como las de las VDT (visual display terminal), para evitar los efectos negativos de los Posefectos del color, como la desaparición de letras en la pantalla o la sensación de vibración en los colores.

La investigación psicológica ha proporcionado pautas para la selección de colores en las interfaces. En cuanto a los términos relacionados con el color, se utilizan tres componentes para describirlos: matiz se refiere a la longitud de onda percibida, que varía de violeta a rojo, saturación mide cuánto contiene la luz otras longitudes de onda además de la del color puro y luminosidad se relaciona con la reflectancia aparente de un color, desde oscuro (negro) hasta claro (blanco), con diferentes tonos intermedios.

  • Iluminación: en el diseño de interfaces, es crucial comprender la intensidad de la energía luminosa que llega a nuestras retinas, ya que afecta la percepción visual de los usuarios Además de la longitud de onda, la duración de la exposición al estímulo también influye en la percepción de la intensidad luminosa.

La Ley de BROCH describe la interacción entre la duración y la intensidad del estímulo visual: para presentaciones muy breves.

Otros factores que afectan nuestra percepción de la energía luminosa incluyen el área retiniana cubierta por el estímulo y la cantidad de luz que entra por el centro de la pupila.

Aunque el diseñador de interfaces no tiene control directo sobre el entorno luminoso del usuario, es importante tener en cuenta el ambiente de trabajo y el puesto de trabajo del usuario. Se deben proporcionar descansos visuales, permitiendo que los usuarios cambien frecuentemente su distancia focal y proporcionando objetos visuales complejos como descanso cuando no están mirando la pantalla. Además, alinear las pantallas correctamente en relación con las fuentes de luz, utilizar vídeo inverso para minimizar los destellos y aplicar filtros son algunas de las prácticas recomendadas para optimizar la experiencia visual del usuario en las interfaces.

Sistema auditivo

El sentido del oído es fundamental para la comunicación humana y desempeña un papel central en las interacciones sociales y la transmisión del conocimiento. En el contexto de la Interacción Persona-Ordenador (IPO), el sentido auditivo es esencial para el estudio de interfaces auditivas y multimodales, donde se combinan el sonido y la imagen para transmitir información. Además, en IPO, se exploran aspectos relacionados con la memoria a corto plazo vinculada al sentido auditivo. Los sonidos se caracterizan por:

  • Frecuencia: Número de ciclos que una onda sonora completa en un segundo, relacionado con la experiencia psicológica del tono.
    • Amplitud: Máxima ampliación respecto a la presión normal, relacionada con la experiencia psicológica del volumen del sonido.
    • Ángulo de fase: Posición del cambio de presión mientras se mueve durante un ciclo completo, indicando la posición en grados de cada fase del ciclo.

El proceso de transducción es crucial para convertir la energía física del sonido en información que pueda ser procesada por las neuronas. Este proceso se lleva a cabo en regiones anatómicas específicas del oído humano.

Oído Externo:

El oído externo, también conocido como pabellón auditivo u oreja, es esencial para aumentar ligeramente la amplitud del sonido y ayudar a determinar la dirección de la que proviene el sonido. Incluye estructuras como el conducto auditivo externo, que protege el tímpano y actúa como un tubo de resonancia, amplificando las frecuencias. El tímpano, una membrana que vibra en respuesta a las ondas sonoras, es la estructura más importante del oído externo.

Oído Medio:

El oído medio consta de tres huesecillos: martillo, yunque y estribo. Estos huesos son cruciales para resolver el problema de “desigualdad de impedancia”, que surge debido al cambio de medio de transmisión de las ondas en el oído interno, donde se encuentra líquido. Los huesecillos actúan como palancas para transmitir la fuerza de las partículas en el aire al estribo, que llega a la ventana oval de la cóclea. Además, en el oído medio hay músculos que se contraen en respuesta a sonidos fuertes y la trompa de Eustaquio, que iguala la presión de aire en el sistema auditivo.

Oído Interno:

El oído interno está formado por los canales semicirculares y la cóclea. La cóclea, a pesar de ser pequeña, es esencial para la audición. Contiene receptores para estímulos auditivos y funciona como un conductor inercial tridimensional, un amplificador acústico y un analizador de frecuencias. La cóclea está llena de líquido y tiene tres canales: la rampa vestibular, la rampa timpánica y el conducto coclear. Cuando el estribo vibra, la presión del líquido en la cóclea cambia, lo que estimula los receptores auditivos en el órgano de Corti. Este órgano transduce la energía de presión de las ondas sonoras en señales eléctricas y químicas que se transmiten a las vías auditivas superiores.

Altura Tonal y Fenómenos Relacionados:

La percepción de la frecuencia de un sonido es fundamental para nuestra experiencia auditiva. Dos teorías explican cómo el oído registra la información de frecuencia: la teoría del lugar, que sugiere que diferentes frecuencias hacen vibrar lugares específicos en la membrana basilar, y la teoría de la frecuencia, que sostiene que la frecuencia de vibración en la membrana basilar coincide con la frecuencia de la onda sonora. La altura tonal depende de la frecuencia, la duración, la amplitud, tonos previos y el estado de alerta del oyente.

Volumen:

El volumen está determinado por la amplitud de la altura tonal, aunque también depende de factores como la duración, los ruidos de fondo y las características del oyente. La relación entre amplitud y volumen no es perfecta y puede variar según la frecuencia del sonido.

Localización Auditiva:

Podemos localizar objetos en el espacio basándonos en los sonidos que producen. La dirección y distancia de un sonido se determinan a través de pistas como las diferencias de tiempo interaural y de intensidad interaural. Además, los movimientos de la cabeza y el cuerpo, junto con las características de los conductos auditivos, ayudan a resolver las ambigüedades en la localización auditiva.

Sonidos Simultáneos:

La combinación de dos tonos produce diferentes sonidos, como pulsaciones, ruidos o dos tonos distintos, dependiendo de la diferencia de frecuencia entre los tonos. Un tono puede enmascarar a otro en ciertas combinaciones, según sus frecuencias y amplitudes relativas. La fatiga auditiva puede ocurrir debido a la exposición continua a ciertos tonos y puede provocar cambios temporales o permanentes en el umbral perceptivo. La contaminación acústica es un problema importante, y sus efectos pueden reducirse mediante la disminución de la exposición a ruidos fuertes, el uso de protectores para los oídos o modificaciones en el origen del ruido.

El tacto

El sentido del tacto es fundamental en la Interacción Persona-Ordenador (IPO) por dos razones principales. En primer lugar, se está convirtiendo en un canal sensitivo importante en el diseño de sistemas de Realidad Virtual. El tacto activo, o percepción táctil, es esencial para comprender las propiedades de los objetos al explorarlos activamente. En segundo lugar, el sistema táctil es crucial para personas con discapacidades visuales o auditivas, siendo los diseños de interfaces táctiles un desarrollo de sistemas alternativos de comunicación.

La piel es el sistema sensorial más grande del cuerpo humano, con una variedad de receptores, incluyendo termoreceptores para la temperatura, nociceptores para el dolor y mecanorreceptores para la presión. El tacto también implica la sensación producida por la deformación de la piel al tocar un objeto. Los estudios del tacto pasivo han revelado que los umbrales de percepción varían según el género y la parte del cuerpo, con regiones corporales más grandes en la corteza cerebral siendo más sensibles.

Sistema cenestésico y vestibular

El sistema cenestésico y vestibular son dos sentidos somáticos que proporcionan información sobre el movimiento y la conservación de la postura erguida, y son importantes en la Interacción Persona-Ordenador (IPO), especialmente en el diseño de sistemas de Realidad Virtual.

Sentido cenestésico:

El sentido cenestésico incluye sensaciones que provienen de la posición y movimiento de las partes corporales. El sistema nervioso central obtiene información sobre la posición y movimiento corporal a través de las órdenes enviadas a los músculos y la información de los receptores sensoriales adecuados. Los receptores cenestésicos se encuentran en ligamentos y articulaciones, y envían información sobre la longitud del músculo, la tensión en el tendón, la presión ejercida sobre los músculos y el dolor asociado al esfuerzo prolongado o calambres musculares.

Sentido vestibular:

El sentido vestibular proporciona información sobre la orientación, movimiento y aceleración del cuerpo. Su función incluye el equilibrio, el mantenimiento de la cabeza en posición erguida y el ajuste de los movimientos oculares para compensar los movimientos de la cabeza. Los receptores del sistema vestibular se encuentran en los canales semicirculares del oído interno y responden a la fuerza de la gravedad y la aceleración angular. También responden a los cambios de posición y la aceleración lineal, aunque de manera más débil.

Sistema olfativo

El sentido del olfato está siendo explorado en el contexto de la Interacción Persona-Ordenador (IPO) debido a las posibilidades que ofrece para crear experiencias virtuales más inmersivas y realistas donde las conexiones directas del olfato con el sistema límbico pueden influir en las emociones del usuario. Sin embargo, las investigaciones en este sentido son limitadas debido a las dificultades que presenta su implementación en el diseño de interfaces.

  • Percepción

En psicología, la sensación se refiere al proceso de captar estímulos físicos del ambiente y convertirlos en estímulos nerviosos que viajan a través de los canales sensoriales hacia el sistema nervioso central.

Por otro lado, la percepción se refiere al proceso mediante el cual asignamos significado a los estímulos captados por nuestros sistemas sensoriales, transformando la información en objetos con colores y formas. Comienza cuando las células receptoras captan información y las vías sensoriales conectan estos receptores periféricos con las estructuras centrales de procesamiento en el cerebro. Existe un procesamiento en paralelo de la información sensorial, esencial para la formación de nuestras percepciones del ambiente. El cerebro no registra simplemente el mundo externo como un fotógrafo tridimensional; en cambio, construye una representación interna de los eventos físicos externos después de analizar sus componentes previamente. Estos procesos son fundamentales para nuestra comprensión y experiencia del mundo que nos rodea.

Organización perceptual de objetos y escenas

Para el diseño de interfaces, la distribución de los elementos es una decisión fundamental que los diseñadores deben tomar. Muchas veces, esta decisión se guía por la intuición del diseñador o restricciones de espacio en la pantalla. Sin embargo, actualmente existe mucha información sobre los procesos psicológicos que subyacen en la percepción organizada de las escenas, proporcionando a los diseñadores las herramientas necesarias para tomar decisiones informadas sobre la distribución de objetos en una interfaz.

La organización perceptual juega un papel fundamental en cómo percibimos y como entendemos las interfaces visuales. Este fenómeno ha llevado al estudio de las Leyes de la Agrupación, es decir, los principios que rigen la organización visual de los elementos en grupos coherentes.

PALMER Y ROCK proponen un modelo teórico de la organización perceptual que se basa en varios procesos. El primero es la detección de bordes que implica identificar los cambios en la luminancia de la imagen para obtener un mapa de bordes de 1D. A continuación, el proceso de formación de regiones agrupa áreas similares en la imagen y separa las atrás que son mas diferentes del resto.

Esto se puede resumir con la siguiente imagen:

El siguiente paso implica la diferenciación entre la figura y el fondo de imagen. Investigaciones clásicas que utilizaron organizaciones ambiguas de figura/fondo han revelado que las personas tienden a percibir solo uno de los lados como un objeto significativo, mientras que el otro (fondo) ni siquiera es recordado, lo que sugiere que deja de ser procesado tempranamente.

Además, se han establecido principios que determinan esta distinción, incluyendo que la figura está delimitada por el fondo, es de tamaño más reducido, está orientada vertical u horizontalmente, tiene mayor contraste, es simétrica y puede tener formas convexas o paralelas. La convergencia de estos principios determina el patrón de imagen en el que se distingue claramente entre la figura y el resto de la escena. Estos principios son fundamentales para entender cómo nuestro cerebro organiza y percibe los elementos visuales en una interfaz.

os procesos de división se encargan de diferenciar las diversas partes de una figura, estableciendo mayor coherencia en la organización de la escena. Los puntos de concavidad profunda, donde el contorno se retrae bruscamente hacia el interior, son analizados para determinar la división de las partes de la figura.

Por otro lado, los principios de agrupación son reglas que determinan cómo varios elementos de la escena se perciben conjuntamente:

  • Proximidad: Si dos objetos están cerca el uno del otro y alejados de los otros, tienden a ser percibidos conjuntamente.
    • Similitud: Los objetos que comparten alguna característica perceptual, tienden a ser percibidos conjuntamente.
    • Destino común: Los elementos que se mueven en la misma dirección se percibirán agrupados.
    • Buena continuación: Los elementos que pueden ser vistos como buenas continuaciones del otro tienden a ser percibidos como conjuntamente.
    • Cierre: Los elementos que forman una figura cerrada tienden a ser percibidos como agrupados.
    • Sincronía: Los elementos visuales que ocurren al mismo tiempo tienden a ser vistos como un conjunto.
    • Región común: Los objetos colocados dentro de una misma región cerrada se percibirán agrupados.
    • Conexión entre elementos: Objetos que están conectados por otros elementos tienden a ser agrupados conjuntamente.

Los principios de agrupación son fundamentales en el proceso de organización perceptual y son crucialmente importantes en el diseño de interfaces. Estos principios pueden ser aprovechados para mejorar la comprensión del usuario y facilitar la interacción.

Es importante tener cuidado al utilizar múltiples principios de agrupación de forma conjunta. En general, cuantos más principios se apliquen coherentemente en una agrupación específica, más fácil será para el usuario percibirla. Sin embargo, si varios principios operan de manera opuesta, los resultados deben ser analizados cuidadosamente. Por ejemplo, si varios elementos están organizados por proximidad, pero al mismo tiempo se aplican principios de conectividad, la agrupación visual puede volverse confusa y contradictoria. Por lo tanto, es esencial encontrar un equilibrio adecuado al utilizar estos principios en el diseño de interfaces para garantizar una experiencia de usuario clara y coherente.

            Organización perceptual y la tarea del usuario

La organización perceptual de los elementos en una interfaz debe estar alineada con la forma en que los usuarios interactúan con la información y llevan a cabo las tareas para garantizar una experiencia de usuario eficiente y coherente.

            Percepción de la Profundidad

La percepción de la profundidad se ha vuelto un tema relevante en el campo de la Interacción Persona-Ordenador (IPO) con el auge de la realidad virtual y los entornos 3D. En estos sistemas, se busca crear una sensación de realismo para el usuario, lo que implica la necesidad de implementar la perspectiva en entornos que tradicionalmente han sido 2D. Aunque se trata de imágenes planas, la percepción de la profundidad se produce a partir del análisis de la imagen retiniana, que es bidimensional en sí misma. Por lo tanto, deben existir claves dentro de la imagen 2D que informen sobre la profundidad de la escena. Las claves más importantes para percibir la profundidad son:

  • Gradiente de textura: se refiere a la frecuencia con la que se alternan las proyecciones de los elementos sobre la superficie de la escena, y aumenta a medida que los objetos se alejan en la imagen. Es importante se mantiene constante cuando la persona está en movimiento, lo que la convierte en una pista visual confiable para percibir la profundidad mientras el usuario se desplaza sobre una superficie en un entorno virtual.
    • Superposición: los objetos más próximos cubren a los más lejanos
    • Tamaño relativo: dos objetos similares, el más grande suele estar más próximo al observador.
    • Altura relativa: os elementos situados a mayor altura suelen percibirse como más lejanos.
    • Perspectiva aérea: cuanto más alejado esté un objeto, se percibirá más borroso y azulado, debido entre otras causas a la existencia de mayor número de partículas en el aire entre el objeto y el observador.
    • Tamaño familiar: si se conoce el tamaño de los objetos, ante una escena en la que se vean a todos del mismo tamaño se percibirá al mas pequeño como más cercano
    • Perspectiva lineal: líneas paralelas reales o imaginarias convergen a medida que se distancian del observador.

También existen claves de profundidad ofrecidas por el sistema visual humano, estas son:

  • Disparidad binocular: debido a la separación entre los dos ojos, recibimos simultáneamente dos imágenes ligeramente diferentes de un objeto en el mundo. Estas diferencias son procesadas conjuntamente en el cerebro debido a los puntos retinianos correspondientes: ubicaciones en cada retina que se solaparían si ambos ojos se interpusieran entre el objeto y la vista. Esta diferencia en la estimulación de ambas retinas se ha utilizado en la implementación de sistemas tradicionales de visión 3D, ya que se proyectan imágenes ligeramente diferentes en cada retina (simulando la visión real) mediante técnicas como el uso de gafas 3D con filtros adecuados, aprovechando esto para crear la sensación de profundidad en las imágenes visualizadas.
    • Paralaje de movimiento: cuando la persona está en movimiento, los objetos más próximos pasan más rápido por el campo visual que los más lejanos, esto ocurre debido al cambio en la posición retiniana de los objetos
    • Acomodación: se produce a partir de la actividad de los músculos del sistema visual. Consiste en el progresivo aplanamiento de las lentes del ojo a medida que el objeto percibe que esta más alejado.
    • Convergencia: se produce a partir de la actividad de los músculos del sistema visual. Se refiere al hecho de que a medida que un objeto se acerca al observador los ojos rotan hacia dentro.

Percepción y reconocimiento de objetos

Es un tema fundamental para la implementación de sistemas de realidad virtual,  ya que comprender cómo el sistema cognitivo reconoce objetos es crucial para el diseño de objetos que sean fácilmente identificables por los usuarios.

La identificación de objetos es un proceso complejo debido a que la imagen del objeto proyectada sobre la retina cambia constantemente con el movimiento del observador o del propio objeto. Además, a menudo no es completa debido a elementos intermedios que pueden ocultar partes del objeto que se intenta reconocer. Por esta razón, el sistema perceptivo utiliza dos vías para acceder a las unidades de reconocimiento, donde se almacena la información sobre el objeto:

  • Representación centrada en la persona: describe lo que rodea al observador desde su punto de vista. Se basa en el análisis de los “geones”, que son las unidades volumétricas básicas en las que se componen los objetos, algunas de sus características son:
    • Son unidades de volumen o profundidad
    • Resultan de la rotación de uno o mas contornos alrededor del eje espacial
    • Pueden describirse según una serie de características no accidentales similares a los contornos que el objeto proyecta en la imagen.

Las características no accidentales de los geones son propiedades estructurales que mantienen una relación casi invariante con respecto a la representación retiniana de un objeto, estas son claves para el reconocimiento confiable de objetos, algunas de ellas son:

  • Rectitud-Curvatura:
    • Coterminación-No coterminación
    • Forma de la coterminación: implica tres contornos que confluyen en un punto.
    • Proyección Paralela

Estas características proporcionan pistas visuales consistentes y estables que el sistema perceptivo utiliza para identificar y reconocer objetos de manera eficiente. La relación casi invariante entre estas características y la representación retiniana permite que el sistema cognitivo identifique objetos

  • Representación centrada en el objeto: Es una descripción de los elementos de la escena independiente de las condiciones de observación. Los geones se alinean respecto al eje principal del objeto, conocido como eje de elongación, lo que facilita la comparación de la similitud entre geones iguales orientados en diferentes direcciones.

Percepción y acceso al conocimiento

Conocimiento a través de imágenes: el uso de iconos.

Para garantizar la efectividad de los iconos en contextos informáticos, se han establecido algunas recomendaciones:

  • Minimizar la diferencia entre el objeto real y su representación: la diferencia entre el objeto real y su representación icónica debe ser mínima para facilitar la interpretación.
    • Consistencia en la posición de los iconos: los iconos deben presentarse en la misma posición a lo largo de todas las pantallas, facilitando el aprendizaje de su uso a través de la navegación por diferentes pantallas y puede reducir los tiempos de identificación, especialmente para iconos claramente diferenciados de su objeto real.
    • Facilidad de discriminación: los iconos deben ser fácilmente distinguibles del resto, es decir, deben ser perceptibles sin dificultad y diferenciarse claramente de otros iconos.
    • Evitar interpretaciones múltiples: los iconos no deben tener varias interpretaciones posibles, por lo que se debe evitar que un icono pueda entenderse de diferentes maneras, ya que esto puede llevar a confusiones.

En casos de representaciones más complejas, es aconsejable utilizar tanto iconos como texto, ya que esta combinación puede proporcionar una comprensión más clara para los usuarios.

Conocimiento de la función de los objetos: las Affordances

Cuando se diseña una interfaz, es muy importante que los usuarios comprendan la función de cada uno de los elementos. Tradicionalmente, se ha pensado que los usuarios deducen la función de un objeto a través de una inferencia: primero reconocen el objeto, luego lo categorizan y, finalmente, acceden al conocimiento de su función.

Sin embargo, existe otra forma más rápida de acceder a la información sobre la función de un elemento, conocida como “affordances”, que son las funciones de un objeto que el observador percibe directamente a partir de su apariencia visual, para que sean efectivas deben cumplir los siguientes requisitos:

  • Forma funcional: la forma del objeto debe corresponder con su función.
    • Visibilidad
    • Acción coherente
    • Relatividad del observador: pueden tener interpretaciones diferentes para diferentes personas, y esto puede utilizarse para crear estándares de affordances homogéneos para ciertos objetos.

Cumpliendo estos requisitos se vuelven más efectivas y ayudan a los usuarios a comprender intuitivamente la función de los objetos en una interfaz.

  • Memoria

La memoria se divide en una serie de sistemas, cada uno con diferentes funciones, por lo que distinguimos:

  • Memoria sensorial: son almacenes temporales de información proveniente de los sentidos, prolongando la duración de la estimulación para facilitar su procesamiento en la Memoria Operativa. Los almacenes más estudiados son los de la vista y el oído.

El almacén icónico se encarga de la información visual, manteniendo una representación isomórfica de la realidad física.

El almacén ecoico retiene estímulos auditivos hasta que el receptor tenga suficiente información para procesarla en la Memoria Operativa.

  • Memoria operativa: también conocida como memoria a corto plazo, es el sistema en el que los usuarios manipulan la información con la que interactúan en su entorno. Es más duradera que la almacenada en las memorias sensoriales.

Esta limitación de capacidad se manifiesta en los efectos de primacía y recencia, donde las personas tienden a recordar más fácilmente los elementos presentados al principio y al final de una lista, pero no los intermedios.

Se compone de varios subsistemas:

  • Ejecutivo Central: coordina los recursos del sistema y distribuye la información a los almacenes especializados.
    • Lazo Articulatorio: encargado de la información verbal hablada y su mantenimiento activo.
    • Agenda Visoespacial: maneja la información espacial y visual.
    • Memoria a Largo Plazo (MLP): es el almacén de información en el que se guardan recuerdos vividos, conocimiento sobre el mundo, imágenes, conceptos, estrategias de actuación, entre otros. Tiene una capacidad ilimitada o desconocida y se considera la “base de datos” en la que se almacena la información a través de la Memoria Operativa para su uso futuro.
      • Memoria Procedimental: almacena información sobre procedimientos y estrategias que permiten interactuar con el entorno de manera automática e inconsciente, y es difícil de verbalizar.

Se considera un sistema de ejecución implicado en el aprendizaje de habilidades que no están representadas como información explícita sobre el mundo, sino que se activan de manera automática como una secuencia de pautas de actuación en respuesta a las demandas de una tarea, donde se incluyen: repertorios motores y estrategias cognitivas. El aprendizaje de estas habilidades ocurre gradualmente a través de instrucciones explícitas o por imitación, y su adquisición depende del tiempo dedicado a practicar y del tipo de entrenamiento.

La información se organiza en reglas de producción, que establecen condiciones y acciones. Las condiciones pueden ser estímulos externos o representaciones de ellos en la memoria operativa, y las acciones implican modificaciones en la información en la memoria operativa o en el entorno.

Es fundamental en el desarrollo de reglas que permiten una ejecución eficiente en tareas específicas. En el contexto de la Interacción Persona-Ordenador (IPO), es relevante para modelos como SOAR y el método GOMS, que basan el aprendizaje de habilidades de interacción en la adquisición y almacenamiento de reglas de producción en la Memoria Procedimental.

  • Memoria Declarativa: almacena información sobre hechos y eventos que pueden ser verbalizados y expresados conscientemente. Distinguimos entre:
    • Memoria Episódica: comprende información sobre el conocimiento del mundo y las experiencias personales de cada individuo, es decir, representa eventos o sucesos que reflejan detalles específicos de situaciones vividas, no solo su significado. La organización de los contenidos sigue parámetros espacio-temporales, es decir, los eventos recordados se relacionan con momentos y lugares específicos en los que ocurrieron. Son aquellos que han sido codificados de manera explícita
    • Memoria Semántica: comprende información sobre conocimientos generales extrapolados de experiencias vividas, es decir, un almacén de conocimientos sobre los significados de las palabras y las relaciones entre estos significados. En este caso, se sigue una pauta conceptual, donde las relaciones entre los conceptos se organizan en función de su significado. Tiene una capacidad inferencial y puede manejar y generar nueva información que nunca se haya aprendido de manera explícita, pero que está implícita en sus contenidos

Esta distinción permite estudiar cómo los programadores pueden usar códigos de otros programas al escribir uno nuevo. Por un lado, tienen información semántica sobre lenguajes de programación, como algoritmos o conceptos asociados al lenguaje que están utilizando (Memoria Semántica). Al mismo tiempo, poseen conocimiento vinculado a situaciones anteriores en las que tuvieron que resolver problemas similares (Memoria Episódica).

  • Representación del conocimiento

En psicología, el término “conocimiento” se refiere a la información almacenada en nuestro sistema cognitivo a través de la interacción con el mundo. Aunque es importante destacar que los términos “información” y “conocimiento” no son sinónimos. La información se refiere al mundo externo al sistema cognitivo que es procesado por nuestros sentidos, mientras que el conocimiento es la información que ha sido procesada y almacenada internamente.

Entre las diversas estructuras propuestas e investigadas que ayudan a entender cómo procesamos y almacenamos la información, las más importantes para la Interacción Persona-Ordenador (IPO), distinguimos:

  • Modelos mentales: es una representación conceptual del sistema que incluye su estructura y su funcionamiento.
    • Redes semánticas: son un tipo de representación mental de nuestro conocimiento a largo plazo, en las cuales las unidades de conocimiento están representadas en nodos conectados por vínculos que expresan las relaciones semánticas entre ellas. La estructura puede variar dependiendo del tipo de conocimiento que se esté representando. Esta organización mental de los conceptos no sigue un orden semántico clásico, lo que implica que se necesitan técnicas específicas para medir estas representaciones mentales. Estas ideas se han aplicado al diseño de menús de programas, donde la tarea de selección de búsqueda en un menú se entiende como una verificación de la relación semántica de las alternativas con el nombre del menú. Cuanto más distantes estén semánticamente el nombre del menú y la opción a seleccionar, más tiempo se requerirá para la tarea y menor será su efectividad. Esto se ha comprobado en estudios con menús cuyos nombres estaban distanciados por diferentes niveles semánticos, demostrando que los usuarios encuentran opciones con mayor rapidez y menor número de errores cuando el nombre del menú es más similar semánticamente a la opción que están buscando.

Procesos de recuperación

La información almacenada a largo plazo, tanto en la Memoria Declarativa como en la Procedimental, se recupera a través de diferentes procesos que dependen de la forma en que dicha información esté representada y del almacén en el que se encuentre, así como de las unidades de información medioambientales e internas que en cada momento activen un recuerdo específico.

En cuanto a la recuperación, existen dos formas que difieren en el tipo de información presentada al sujeto para que se produzca la recuperación, estas son:

  • Reconocimiento: presenta al sujeto la información que se quiere recuperar. Se explica en función del cálculo de la familiaridad. Puede ser:
    • Explícita: asociada con información episódica y procesos activos en la Memoria Operativa.
      • Implícita: se refiere al acceso a información almacenada sin que el sujeto tenga conciencia de cómo se recupera, y se encuentra principalmente en la Memoria Procedimental y Semántica. Un ejemplo es el priming, que es el efecto facilitador o inhibidor que un estímulo previamente presentado puede tener sobre la información almacenada, incluso si el sujeto no es consciente de haber percibido dicho estímulo.
    • Recuerdo: esta información no está presente y el sujeto debe generar sus propias claves de recuerdo o utilizar claves presentes en el contexto para recuperar la información. El sujeto debe generar un conjunto de posibles candidatos a recuperar, lo que implica un proceso de búsqueda guiado por principios organizativos y asociativos. Después de la búsqueda, tiene lugar el proceso de identificación del mejor candidato, basado en el cálculo de la familiaridad a través de la fuerza asociativa entre la clave de recuerdo y la información recuperada.

Tipos de Conocimiento relevantes para IPO y la forma como son adquiridos y estan representados en MLP.

En el contexto de la Interacción Persona-Ordenador (IPO), cuatro tipos de conocimientos son especialmente relevantes:

  • Conocimiento sobre la estructura y el funcionamiento del sistema: se refiere a la comprensión que los usuarios sobre cómo opera el ordenador y cómo interactuar con él.
    • Conocimiento sobre la tarea: implica la comprensión de la tarea específica que el usuario quiere realizar utilizando el sistema, es fundamental para llevar acciones específicas de manera efectiva.
    • Conocimiento adquirido durante la navegación: es la información que los usuarios obtienen mientras explorar y navegan por el sistema, incluyendo la comprensión de la disposición y organización de la información en el sistema
    • Extracción del conocimiento (data visualization): es la capacidad de los usuarios para extraer información significativa a partir de los datos representados visualmente, implicando comprender y analizar gráficos, tablas u otras representaciones visuales.

Conocimientos sobre la estructura y el funcionamiento del ordenador: los Modelos Mentales

Este concepto se refiere a la representación conceptual que los usuarios tienen del sistema con el que estan interactuando. Incluye información sobre la estructura y funcionamiento del sistema, pero no necesariamente con detalle, y varía dependiendo de la complejidad según las necesidades del usuario. Son incompletos, ejecutables mentalmente, inestables, no tienen límites claros y pueden contener creencias erróneas.

Son fundamentales para la interacción con sistemas físicos y computacionales. También influyen en la forma en que los usuarios describen los problemas que enfrentan y cómo se comunican con los técnicos de soporte.

Son esenciales para la comprensión y la eficacia en la interacción entre las personas y los sistemas, especialmente en el diseño y el soporte de sistemas informáticos.

El lugar del Modelo Mental en el Sistema Cognitivo Humano

El modelo propuesto por CAÑAS y ANTOLÍ establece una definición específica de “modelo mental” y su ubicación en la memoria. Además, el modelo también considera la influencia de otros sistemas cognitivos o no cognitivos. Distingue dos tipos de representaciones:

  • Modelo Conceptual: es una representación estable del conocimiento general almacenado en la memoria a largo plazo y que contiene información general y duradera sobre el sistema. Sirve como marco sobre el cual se realiza la simulación en la Memoria Operativa. Incluye el conocimiento sobre el mundo y puede modificarse a través del modelo mental mediante conexiones bidireccionales, a medida que se realizan nuevas tareas o se producen cambios en el sistema.
    • Modelo Mental: es dinámico y se crea en la Memoria Operativa combinando información de la memoria a largo plazo y del ambiente externo, adaptándose a las características específicas de la tarea que se está realizando. Está directamente relacionado con el sistema motor que ejecuta la respuesta necesaria para llevar a cabo la tarea. Después de simular mentalmente las opciones disponibles y sus posibles resultados, se elige la opción que lleva al resultado deseado basándose en el conocimiento general del sistema y luego se ejecuta esa opción.

Evaluación del Modelo Mental que un usuario tiene y sus aplicaciones

El aprendizaje de una herramienta informática implica la adquisición de una representación mental de los conceptos relacionados con esa herramienta, donde se organiza en función de las relaciones de similitud o proximidad conceptual entre los conceptos.

Para evaluar el nivel de aprendizaje, se utilizan técnicas de evaluación que examinan cómo el usuario organiza los conceptos en su mente. Estas técnicas se basan en la premisa de que si dos conceptos están estrechamente relacionados debido a su uso conjunto en tareas específicas, esta relación estará reflejada en la memoria del usuario.

Las tareas realizadas con la herramienta informática requieren conocimiento de varios conceptos que están interconectados debido a su relevancia en la realización de diversas tareas.

Las técnicas de evaluación implican la identificación de estos conceptos clave, la creación de tareas específicas que requieren el uso de estos conceptos, la observación de cómo los usuarios aplican su conocimiento en estas tareas y la evaluación de cómo están organizados y relacionados los conceptos en la mente del usuario. Estos procesos proporcionan una comprensión del nivel de competencia del usuario con la herramienta informática.

Obtención de datos de proximidad conceptual

Para evaluar la relación entre los conceptos relevantes del procesador de texto Word en función del nivel de conocimiento de los usuarios, se utilizan dos tipos de tareas:

  • Agrupamiento: los usuarios deben organizar los conceptos importantes en grupos que consideren similares. Estos agrupamientos proporcionan datos sobre la proximidad conceptual según la percepción de cada usuario.
    • Juicios de Relación: se presentan pares de conceptos a los usuarios, quienes asignan valores de relación en una escala numérica. Un valor bajo indica que los conceptos no están relacionados, mientras que un valor alto indica una relación fuerte; para así ofrecer información adicional sobre cómo los usuarios perciben la relación entre los conceptos seleccionados.

Análisis de los datos de proximidad conceptual

En la evaluación de las matrices de juicios de relación conceptual, dos métodos de análisis comunes son:

  • Escalamiento Multidimensional: ofrece un análisis global del conocimiento, identificando estructuras abstractas en la representación del conocimiento de expertos usuarios de sistemas.

Tiene como objetivo obtener una representación visual de las dimensiones que relacionan los conceptos de un área de conocimiento específica.

En la representación bidimensional de los conceptos, los valores en los ejes indican los pesos que los conceptos tienen en esas dimensiones. La cercanía de dos conceptos en el espacio sugiere una relación semántica más cercana en la representación mental de las personas. La dimensión en el eje de las abscisas (X) agrupa conceptos relacionados con operaciones de archivos y edición de documentos, y crea subgrupos diferenciables. La dimensión en el eje de las ordenadas (Y) diferencia entre diferentes operaciones.

Los pesos asignados por monitores y participantes a estas dimensiones indican diferencias en la percepción del conocimiento. Los monitores asignan más peso a la dimensión ‘Operaciones con ficheros versus Edición’, mientras que los participantes en la fase 1 asignan más peso a la dimensión ‘Diferencias entre operaciones’. Sin embargo, en la fase 2, los participantes ajustan sus pesos para que sean más similares a los de los monitores, indicando un proceso de aprendizaje.

  • Pathfinder: se centra en las relaciones por pares de conceptos y es útil para investigar las estrategias de navegación de los usuarios, especialmente en tareas de recuperación de información. Los grafos conceptuales ayudan a visualizar las estrategias que los usuarios emplean para navegar en bases de datos y otros sistemas de información.

Se utiliza un índice de similitud llamado C para comparar los grafos y evaluar el conocimiento de los participantes. Los resultados muestran que los participantes tienen un conocimiento relativamente bueno en la primera fase y muestran un aprendizaje significativo en la segunda fase del curso. Además, se realizan interpretaciones cualitativas de las relaciones semánticas. También se señala que algunos conceptos pueden no haber sido adecuadamente aprendidos

Conocimiento sobre la tarea que el usuario quiere realizar

En el diseño de interfaces, es crucial considerar el conocimiento previo de los usuarios sobre el dominio de la aplicación. La organización de los elementos en los menús se basa en los procesos cognitivos de los usuarios al buscar opciones:

  • Identificación: los usuarios reconocen las etiquetas del menú y seleccionan la opción que buscan. Ocurre en entornos donde los elementos son bien conocidos, y los menús suelen organizarse alfabéticamente.
    • Equivalencia: los usuarios conocen la función que desean realizar pero no están seguros de la etiqueta exacta en el menú. Deben analizar las opciones para encontrar la que creen que es equivalente a su objetivo.
    • Inclusión de clase: los usuarios conocen la acción que desean realizar pero no saben en qué categoría se encuentra en el menú. Las etiquetas deben corresponder a una jerarquía superior para facilitar este tipo de procesos.

Para diseñar interfaces efectivas, los diseñadores pueden utilizar métodos de elicitación del conocimiento, como el Escalamiento Multidimensional y el Método Pathfinder, para comprender cómo los usuarios organizan mentalmente la información. Además, las interfaces orientadas a objetos utilizan metáforas familiares para representar la estructura y el funcionamiento del sistema, permitiendo a los usuarios interactuar intuitivamente con el sistema sin necesidad de entender la complejidad técnica

Conocimiento adquirido durante la navegación

La navegación en Internet o en hipertexto implica que los usuarios obtengan información o adquieran conocimiento al combinar la información disponible en la interfaz y su propio conocimiento sobre el dominio. La navegación implica leer el contenido de una página y seleccionar enlaces a otras páginas. El diseñador de una página web tiene la tarea crucial de organizar cómo y entre qué páginas se establecerán los enlaces. Existen tres opciones para establecer esta estructura:

  • Decisión del diseñador: El diseñador organiza las páginas según su conocimiento del dominio o su intuición.
    • Análisis de asociaciones entre documentos: Se analizan las asociaciones entre los documentos para establecer los enlaces entre las páginas.
    • Análisis empírico con usuarios: Se utilizan juicios de relación y algoritmos como el Pathfinder para establecer la estructura basándose en la percepción de los usuarios.

El objetivo principal del diseñador es que los usuarios encuentren la información que necesitan o adquieran conocimiento de manera rápida y eficaz, evitando la desorientación, que ocurre cuando los usuarios se sienten perdidos y confundidos en su navegación.

Para establecer la estructura de una página web o contenido educativo, el diseñador debe considerar la jerarquía de los conceptos y las relaciones no jerárquicas entre ellos. Se pueden utilizar estructuras totalmente jerárquicas, en forma de red o mixtas. Estudios han demostrado que las estructuras mixtas son las más efectivas, ya que permiten adaptarse tanto a usuarios con poco conocimiento que necesitan guía.

También pueden utilizar métodos de evaluación del conocimiento para determinar las estructuras más adecuadas.

Cuando se trata de establecer la estructura para información extraída de bases de datos, se pueden utilizar técnicas que analizan las palabras en común entre las páginas para establecer similitudes y crear enlaces relevantes.

Extracción del conocimiento (data visualization)

Los sistemas informáticos se utilizan para visualizar grandes cantidades de datos con el fin de encontrar información relevante.

El desafío en estos casos no es solo presentar los datos, sino hacerlo de tal manera que los usuarios puedan descubrir patrones significativos que les ayuden a tomar decisiones informadas. La interfaz se convierte en una herramienta que facilita el pensamiento del usuario.

La visualización científica utiliza gráficos de computadora para facilitar la organización y comprensión de datos sobre fenómenos físicos, ayudando a los procesos perceptuales humanos. Los sistemas de visualización de información están diseñados para usuarios comprometidos en la búsqueda activa de información. En situaciones donde se deben explorar patrones de datos jerárquicos, como los valores bursátiles de empresas organizados jerárquicamente, las representaciones tradicionales con nodos y lazos pueden dificultar la comparación de datos. Para abordar este problema, se han desarrollado interfaces de visualización, como los ‘Treemaps’ (Mapas en árbol). Los Treemaps, propuestos por Ben Shneiderman, son algoritmos que presentan estructuras jerárquicas en un espacio 2D, utilizando rectángulos donde la altura, la anchura y los colores representan diferentes atributos de los datos

Design de interface

Hoje dar-se-á continuidade ao resumo, apenas resumindo a página 20

Resumo pág. 20:

Neste resumo da página 20, destaco os dois princípios mais importantes do design de interfaces de usuário: coerência e mapeamento. Também forneco alguns exemplos de cada princípio.

  • Coerência: interfaces consistentes são mais fáceis de usar.
  • Mapeamento: ações do usuário devem ter resultados consistentes.
  • Exemplos: barra de navegação com o mesmo estilo, clicar em “Abrir” abre um arquivo.

DESIGN DE INTERFACES

O RELEVO DA COERÊNCIA
GRÁFICA NO DESENVOLVIMENTO
DAS INTERFACES DE UMA MARCA

Página 8

No estágio fez-se aperfeiçoar no conhecimentos na area do Design de Interfaces e aplicar técnicas adquiridas.Nesse projeto  baseou em explorar casos reais ,de forma a viver novos desafios e novos caminhos ainda por traçar no mundo profissional.

A relação das interfaces com o utilizador através da observação, interacção e ligação com o produto e com estudos a clarificação processos de criação e desenvolvimento na novas melhorias.

OBJECTIVOS ESPECÍFICOS

Os objectivos específicos do projecto passaram por:

– Compreender as interfaces e qual o seu impacto no utilizador;

– Desenvolver interfaces de novas funcionalidades do produto ‘Boonzi’ ;

– Desenvolver interfaces de uma versão do produto digital para telemóvel ;

– Redesenhar páginas Web do site da empresa;

– Melhorar a forma como a coerência gráfica e a usabilidade aumentam

o valor da marca no produtos digitais do ‘Boonzi’;

Como principal objectivo deste projecto tivemos a promoção da marca

‘Boonzi’

Página 12 ate página

  1. DESIGN GRÁFICO
  1. DEFINIÇÃO DOS TERMOS ‘DESIGN’ E ‘GRÁFICO’

“O mundo está repleto de pequenos exemplos de bom Design, com os incríveis detalhes que fazem diferença nas nossas vidas” . ( Norman, 1998: 28)

Para termos uma noção o processo de designação da área ,tinhamos que entender qual a etimologia das palavras Design e gráfico em que esta sujeito a uma longa série de interpretações e ainda utilizada para referir ao processo de programação, planeamento, coordenação, seleção e organização de uma série de fatores  e com objetivos a produzir comunicações visuais.

Em relação a palavra gráfico que relaciona  com a produção de objetos visuais destinados a comunicar  mensagens específicas, em noutros contextos  ‘gráficos , não significa desenhos , gravuras, gráficos.

Nota-se que as duas palavras juntas, designam-se pelo planeamento de objectos visuais destinados a comunicar a essa  designação dá-se o nome de Design Gráfico.

  1. O DESIGNER DE COMUNICAÇÃO VISUAL

Na terminologia de  ‘designer gráfico’ seja a denominação mais aceite para o profissional, o título seria mais apropriado e descritivo é de  ‘Designer de Comunicação Visual’,ainda com 3 elementos necessários para uma actividade ,como um Método (desenho) , um objectivo (Comunicação) e um Campo (visual).

Para projectar para pessoas são com principios básicos como fazer um bom modelo conceptual e tornais coisa visívies.O designer atraves desses principios e metodos contruir mensagens atrav´s de meios visuais.

  1. A MARCA

1.3 .1  BREVE ENQUADRAMENTO HISTÓRICO

Em 1907, o visionário Emil Rathenau, director da empresa alemã AEG,contratou Peter Behrens (1868-1940) e Otto Neurath (1882-1945) essa equipa seria a primeira  de consultores para uma “imagem corporativa”( como a empresa é vista em determinado momento ou assunto é a forma como uma ação,falta dela ,é recebida pelo público e falar de imagem é exprimir como cliente ou publico em geral ,como é exergada a marca. Os primeiros esforços depois da 2ª guerra mundial vieram através de designers individuais que puseram a sua técnica pessoal nos símbolos dos seus clientes. Um grande exemplo desta actuação foram os posters da Olivetti Corporation , criados por Giovanni Pintori (1912-1998). Estedesigner construiu não só a imagem corporativa da empresa como toda a sua comunicação visual que contribuiu de uma forma bastante significativa para o Design de comunicação de cartazes e para a evolução da marca Olivetti. Esta veio revolucionar o Design gráfico, Design de produto e o Design arquitectónico.

1.3.2 A MARCA E O SIGNIFICADO DOS TERMOS IMAGEM E IDENTIDADE CORPORATIVA

Ao longo dos tempos, os termos ‘Imagem e Identidade corporativa’

têm vindo a ser interpretados de diferentes formas, sendo muitas vezes

confundidos, devido à novidade da disciplina do Design.

O termo identidade corporativa auto-representa a organização no seu

todo, enquanto o termo imagem corporativa, as formas de representação.

    até página 15