Baixe o app para aproveitar ainda mais
Prévia do material em texto
26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 1/17 2014.1 - EAD - MODELAGEM DE SISTEMAS (CCT0264/1509036) 9001 - Fórum de Discussão D (Aulas 9 e 10) Criado pelo(a) Professor (a) .PRODUÇÃO EAD em 05/03/2014 16:36:19 Esse é o espaço destinado para discussão dos conteúdos e conceitos abordados nas aulas 9 a 10. Contribua com suas anotações, dúvidas e pontos de vista, já que sua nota de participação será apurada por meio da colaboração nas discussões dos fóruns Além disso, o (a) tutor (a) a distância irá lançar questionamentos para interação de todos. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 43 dias atrás Prezado(a)s aluno(a)s, ABAIXO CONSIDERAÇÕES E TEMA PARA POSTAGEM 1) Não faça copias e colagens da internet e se usar textos de terceiros referencie e faça suas conclusões e comentários. 2) Não poste, PELA PRIMEIRA VEZ, nos 2 últimos dias, pois o rendimento e pontuação são menores, em função da ausência de interação entre nós, o que é fundamental. TEMA A aula 10 aborda a visibilidade de atributos e métodos dentro das classes, atividade de extrema relevância para a criação de classes coesas e indepdendentes. Discorra sobre a relevância da boa classificação de usabilidade dos atributos e métodos, para 1. Manter o conceito de encapsulamento efetivo 2. Possibilitar a herança e polimorfismo de forma adequada. NÂO responda cada item, pois o tema é para uma postagem de um texto ÚNICO, com coerência, de no máximo 6 linhas que e aborde na íntegra a temática proposta. Em seu texto use contra exemplos, que caracterize o que NÂO deve ser feito, em relação a usabilidade de atributos e métodos, dificultando o encapsulamento, herança e polimorfismo. Aluno (a) GILSON DA ROCHA respondeu a 43 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA A relevância é a segurança dos atributos e métodos. Tudo o que o usuário externo precisa conhecer a respeito de uma classe encontra-se em propriedades ou métodos declarados como públicos. Declarando como privado os métodos e atributos ficam encapsulados, ficando assim ocultos. O polimorfismo é quando uma classe pode usar os objetos da outra. Por exemplo: se eu tenho uma classe que mostra um menu na tela. Essa seria uma classe pública, mas as informações importantes para o sistema ficam em uma classe privada. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 42 dias atrás Comentário da postagem de GILSON DA ROCHA Gilson avance em suas explicações e mostre a relevancia para cada conceito solicitado no enunciado: encapsulamento, herança e polimorfismo. Alem disso o seu conceito de polimorfismo não esta correto. Reveja por favor. Apos relfexão do acima exposto, refaça, por favor, o seu texto. Obrigado Abs Marcelo Aluno (a) GILSON DA ROCHA respondeu a 37 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Quando usado cuidadosamente, o encapsulamento transforma seus objetos em componentes “plugáveis”. Para que outro objeto use seu componente, ele só precisa saber como usar a interface pública do componente. Polimorfismo é o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação,.mas comportamentos distintos. A herança é o compartilhamento de atributos e operações entre classes com base em relações hierárquicas. 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 2/17 Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 37 dias atrás Comentário da postagem de GILSON DA ROCHA Gilson OK, mas e o foco de nosso fórum? - a visibilidade dos atributos e metodos. Como essa visibilidade se encaixa nos conceitos que voce expos, muito habilmente. Abs Marcelo Aluno (a) PAULO HENRIQUE RODRIGUES RIBEIRO respondeu a 43 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Editado por PAULO HENRIQUE RODRIGUES RIBEIRO em 14/05/2014 16:18 Boa tarde, Professor. Herança é um mecanismo que auxilia a definir relações de subtipo e reutilizar código. De todo modo, herança e subtipo são mecanismos diferentes entre si e devem ter construtores diferentes nas linguagens de programação. Herança é um conceito muito poderoso, pois possibilita que os desenvolvedores maximizem o uso dos métodos (comportamento) e dos dados (estrutura) dos objetos existentes. Podemos entender herança, sob a ótica de linguagem de programação orientada a objetos, como sendo um mecanismo para construir classes a partir de classes existentes. Polimorfismo é a habilidade de diferentes objetos receberem a mesma mensagem e se comportarem de maneira diferente. Implica em criar uma interface pela qual serão recebidas mensagens determinando o comportamento do objeto. O Polimorfismo também suporta passagem de tipos diferentes de objetos como parâmetro nas mensagens enviadas a outros objetos. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 42 dias atrás Comentário da postagem de PAULO HENRIQUE RODRIGUES RIBEIRO Paulo, Sua postagem nao esta dentro do contexto do que fora soliciatdo. Não estamos discutindo aqui os conceitos de encapsulamento, herança e polimorformos e sim a RELEVANCIA de uma boa classificação de atributos e métodos, para que cada um dos conceitos possa ser implementado com efetividade. Agradeço e aguardo seu novo texto, agora atendendo ao que se pede. Abs Marcelo Aluno (a) FLÁVIO DE OLIVEIRA LIMA respondeu a 40 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA O conceito de implementação de uma classe visa proteger de forma encapsulada seus métodos e atributos. Por questão de segurança, é importante que os atributos de uma classe sejam acessados apenas por meio de métodos privados e seja evitado o uso de atributos públicos. Quando for necessário acessar algum atributo, o mesmo pode ser feito por meio de interfaces, utilizando-se por exemplo, de métodos com parâmetros que podem ser tratados na classe. Uma boa classificação utiliza adequadamente a definição da visibilidade de seus atributos e métodos, permitindo seu reuso e formas diversas para interação com outras classes. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 40 dias atrás Comentário da postagem de FLÁVIO DE OLIVEIRA LIMA Oi Flavio, Muito bom, excelentes comentarios. O encapsulamento e a base da OO e nao devemos desrespeita-lo jamais, Que prejuizos, para o codigo e as classes, podemos ter quando classificamos atributos como publicos ? Abs Marcelo Aluno (a) FLÁVIO DE OLIVEIRA LIMA respondeu a 40 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Editado por FLÁVIO DE OLIVEIRA LIMA em 17/05/2014 14:07 Ao meu ver, os principais são falha de segurança e a alta manutenibilidade. Por exemplo, quando atributos que precisam ser validados são públicos, normalmente, deveriam ser tratados pela classe chamadora. Isto seria um problema, pois cada uma dessas classes deveria implementar diferentes formas de validação, sem seguir um mesmo padrão, ou pior, não implementar validações. Porém com o encapsulamento haveria um único padrão de validação, com regras bem definidas e tratamento de erros adequado. Além disso, caso haja necessidade de manutenção do código, todos os trechos relacionados ao atributo deveriam ser revistos; perda de tempo e passível de falha de consistência. 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 3/17 Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 38 dias atrás Comentário da postagem de FLÁVIO DE OLIVEIRALIMA Isso Flavio, Resumindo e simplificando, quando atributos são classificados como publicos, podemos concluir que ferimos ao principio do encapsulamento ? Abs Marcelo Aluno (a) FLÁVIO DE OLIVEIRA LIMA respondeu a 33 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Editado por FLÁVIO DE OLIVEIRA LIMA em 24/05/2014 13:25 Sim, atributos classificados como públicos ferem o princípio de encapsulamento. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 31 dias atrás Comentário da postagem de FLÁVIO DE OLIVEIRA LIMA E isso ai, Flavio Construiu o conhecimento com efetividade Abs Marcelo Aluno (a) PATTRICK MULLER QUEIROGA respondeu a 40 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA A boa classificação de usabilidade dos atributos e métodos é fundamental para que o encapsulamento da classe seja efetivo, contribuindo para que a classe e seus métodos sejam o mais independentes quanto for possível e para que seja flexível e de fácil manutenibilidade. Partindo deste princípio, onde o encapsulamento foi executado com perfeição, teremos a flexibilidade e independência necessária para que a classe dê origem a novas classes especializadas e que estas novas classes possam ser utilizadas por interfaces criadas para a classe pai. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 38 dias atrás Comentário da postagem de PATTRICK MULLER QUEIROGA Pattrick, Muito bom, relacionando bem os temas propostos. Parabebns. O que acontece quando classificamos um atributo como publico ? e um metodo como privado? Se quisermos que um metodo seja passível de herança, qual visibilidade devemos atribuir a ele? abs 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 4/17 Marcelo Aluno (a) PATTRICK MULLER QUEIROGA respondeu a 37 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA O que acontece quando classificamos um atributo como publico ? e um metodo como privado? R: O atributo publico será visível para as subclasses e para as classes que utilizarem este objeto e o atributo privado não será visível. Se quisermos que um metodo seja passível de herança, qual visibilidade devemos atribuir a ele? R: Public ou Protected Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 36 dias atrás Comentário da postagem de PATTRICK MULLER QUEIROGA Pattrick E um atributo publico e bem vindo, ou fere algo ? Por que? Abs Marcelo Aluno (a) PATTRICK MULLER QUEIROGA respondeu a 34 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Boa noite professor, Não é bem vindo, pois um atributo publico iria de encontro as boas práticas para encapsulamento. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 34 dias atrás Comentário da postagem de PATTRICK MULLER QUEIROGA Boa Pattrick Obrigado pela participação Abs Aluno (a) ERES PEREIRA DA ROCHA respondeu a 39 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Boa tarde a todos. O encapsulamento é derivado do termo encapsular, em linguagem de programação, significa separar o sistema em programas, ou seja em partes isoladas de modo a torná-los, mas flexíveis, mais fácil de se manipular. Creio que não devemos então estender os programas, pois se tornariam difíceis de se modificar, creio também que se estiver separados um programa pode ser utilizado em outras rotinas. Herança é um mecanismo da orientação a objeto, que permite criar classes a partir de outras classes, estas seriam as subclasses, que herdam todas as características de suas superclasses, como são assim chamadas as classes de que se derivam as subclasses. No meu entender, as subclasses são criada para facilitar o processamento. onde serão utilizadas somente,quando for coerente utilizá-las. 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 5/17 O polimorfismo parte do principio em que duas ou mais subclasses podem invocar métodos de uma superclasse, que tenham a mesma identificação, mas comportamentos distintos. o polimorfismos, quer dizer várias formas, ou seja, denota uma situação em que um objeto pode se comportar de várias formas dependendo de uma mensagem recebida, conforme o seu tipo de criação. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 38 dias atrás Comentário da postagem de ERES PEREIRA DA ROCHA Oi Eres O seu conceito de encapsulamento esta equivocado e o mesmo não se restringe a programação e sim a analise e projeto também. Em orientação a objeto tem a conotação de proteger atributos e metodos de acessos indesejados. Alem disso esse forum não é para discutir os 3 conceitos apresentados, como voce fez e sim discutir a visbilidade de atributos e metodos, ou seja como essa visibilidade deve ser classificada para que os 3 conceitos possam ser implementados de forma efiente. Para que possa postar com mais propriedade - rever o conceito de encapsulamento, sob a otica acima explicada - estudar a aula 10 online, para ver os conceitos de visibilidade de atribiutos e metodos. Aguardo sua nova postagem condizente abs Marcelo Aluno (a) SÉRGIO MARCOS PIZIOLO respondeu a 38 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Boa tarde a todos! O cenceito de encapsulamento vem de proteger, ai no caso os métodos e atributos de uma classe, permitindo o acesso essa classe de maneira privativa, ao criador da classe; devemos evitar o acesso público, pois nos da uma implementação menos flexível, quanto a mudança de código, criando essa classe de maneira privada, conseguimos também uma fácil reutilização dos seus componentes, uma vez que seus componentes são independentes. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 38 dias atrás Comentário da postagem de SÉRGIO MARCOS PIZIOLO Sérgio, Otimo. Bem pontuado. Como a herança e o polimorfismo seráo possíveis, dianta da premissa do encapsulamento? de exemplos praticos, se possível for Abs Marcelo Aluno (a) SÉRGIO MARCOS PIZIOLO respondeu a 35 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Marcelo, boa tarde! O encapsulamento feito com o motivicador private os atributos da classe pai não ficam acessíveis as classes filha, para dar acesso a classe filha teríamos que usar o motivicador protected. Ex.: protected class Valor{ protected float a,b; public Valor(float ia, float ib) { this.a=ia; this.b=ib} . } class Virgula extends Valor{ public Virgula(float c, float d) { super(c,d); } public void move (float ix, float iy) Ex.: private 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 6/17 class Numero { private float a,b; public Numero (float ia, float ib) { this.a=ix; this.b=ib; } public void inicializa(float c, float d) { this.a=c; this.b=d; } public float retorna a ( ) { return x; . . } class Virgula extends Numero { public Virgula (float c, float d) { super (c,d); } . . } Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 34 dias atrás Comentário da postagem de SÉRGIO MARCOS PIZIOLO Beleza Sergio Boa complementação Obrigado pela partcipação aqui Abs Aluno (a) DIEGO AUGUSTO PEREIRA DE ANDRADE respondeu a 38 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Professor Marcelo, boa tarde! Para que o encapsulamento seja efetivo devem ser encapsulados os métodos e atributos paraque o acesso aos atributos da classe sejam feitos pelo método privado, com permissão, o encapsulamento serve para proteção dos dados, segurança.O modificador private deixará visível o atributo apenas para a classe em que este atributo se encontra. A herança compartilha atributos e operações entre classes, para isso é necessário que haja o tratamento de erros dos atributos e métodos das classes, uma boa classificação evita que se projete e implemente novamente um código já existente, evita a redudância, e permite a interação com as demais classes. 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 7/17 No caso de polimorfismo, é necessário que os métodos tenham exatamente a mesma identificação, sendo utilizado o mecanismo de redefinição de métodos, que é o mesmo que sobrescrita de métodos em classes derivadas. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 38 dias atrás Comentário da postagem de DIEGO AUGUSTO PEREIRA DE ANDRADE Oi Diego, metodo privado? mas nesse caso como outra classe vai acessar esse metodo ? nao entendo Como a heranca sera possível? Abs Marcelo Aluno (a) DIEGO AUGUSTO PEREIRA DE ANDRADE respondeu a 37 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Professor, bom dia! A herança será possível permitindo o seu reuso e formas diferenciadas para interagir com as outras classes. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 36 dias atrás Comentário da postagem de DIEGO AUGUSTO PEREIRA DE ANDRADE Diego Ok, quando ao segundo questionamento? e as perguntas na linha anterior a que respondeu ? Agradeço Abs Marcelo Aluno (a) DIEGO AUGUSTO PEREIRA DE ANDRADE respondeu a 35 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Professor, bom dia! Quanto ao método privado, para que possamos manter o conceito de encapsulamento efetivo é ncessário que seus dados e métodos sejam protegidos,sendo assim temos os métodos privado,público,protegido e implementação onde deverão ser respeitados suas particularidades de classes por uma questão de segurança dos dados. As classe principais, "mãe" devem ser protegidas e as "filhas" devem ser publicas para que qualquer classe possa ler as informações. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 35 dias atrás Comentário da postagem de DIEGO AUGUSTO PEREIRA DE ANDRADE Diego Se mantivermos todos os METODOS como privados, que serviço a classe prestara as demais? abs Marcelo Aluno (a) DIEGO AUGUSTO PEREIRA DE ANDRADE respondeu a 34 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Professor, boa tarde! Se mantivermos todos os metodos como privados não prestará serviço algum as demais classes pois perde sua finalidade. Abraço, Diego Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 31 dias atrás Comentário da postagem de DIEGO AUGUSTO PEREIRA DE ANDRADE 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 8/17 Ok Diego, logo nao devemos ter classes apenas com metodos privados, pois a classe ficarea sem sentido Bingo !!! Abs Marcelo Aluno (a) GUSTAVO ALVES PEIXOTO respondeu a 37 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA O encapsulamento é uma parte fundamental quando se trata de segurança. Temos que dar atenção especial principalmente quando definimos atributos e métodos como “públicos”. Analisar a real necessidade e a possibilidade de migra-los para “Privados” ou “Protegidos”. O ideal é que o maior número de métodos e atributos sejam definidos como “Privados”, só podem ser visualizados dentro da própria classe, quando há a necessidade de que uma subclasse utilize atributos ou métodos da classe mestre definimos como “Protegida” e a publica qualquer classe pode ler informações e deve ser evitada. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 36 dias atrás Comentário da postagem de GUSTAVO ALVES PEIXOTO Oi Gustavo Devemos ter atributos publicos? Por que ? Mas se os metodos forem privados, como a classe vai ofercer servicos as demais? Voce so abordou encapsulamento. E como devem ser as visibilidade para efetiva implantacao de heranca e polimorfismo? Agradeço Abs Marcelo Aluno (a) GUSTAVO ALVES PEIXOTO respondeu a 35 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Podemos utilizar atributos públicos em alguns casos onde os mesmos precisam ser compartilhados por todas as classes, porém deve ser realizada uma analise criteriosa para não colocar em risco a segurança do programa. Quanto a visibilidade quando definimos os métodos ou atributos como publico, privado ou protegido estamos definindo também a visibilidade dentro de classes filho através da herança ou em todas as classes, ou definindo se podemos utilizar um mesmo atributo ou método em outra classe sem comprometer a qualidade dos dados. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 34 dias atrás Comentário da postagem de GUSTAVO ALVES PEIXOTO Ok, Gustavo Mas nao respondeu abaixo - Mas se os metodos forem privados, como a classe vai ofercer servicos as demais? devemos evitar sempre, clasificar atributos como piblicos, pois fere o principio do encapsulamento Abs Marcelo 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 9/17 Aluno (a) GUSTAVO ALVES PEIXOTO respondeu a 33 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA A única maneira de lermos dados de atributos privados, é se construirmos dentro da classe do atributo privado um método com atributo publico ou protegido e passarmos este valor através do método. Por exemplo: //Cria a classe class Ler_Atributo_privado { //Cria o atributo privado nota private int nota; //Método que atribui um valor para variável privada nota Public void escreve_valor (int nota) { This.nota = nota; } //Método que le a variável privada nota Public int ler_nota () { Return this.nota; } } Obrigado pela oportunidade de compartilhar conhecimento entre colegas e o professor ampliando meu conhecimento. Abraços, Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 31 dias atrás Comentário da postagem de GUSTAVO ALVES PEIXOTO Gustavo Ok, mas mesmo depois da minha segunda tentativa de obter sua resposta, voce nao foi objetvo ao me responder o primeiro questionamento, sobre os metodos privados. Se todos os metodos forem privados, a classe não prestará serviço as demais classes e perderá o sentido Abs Marcelo Aluno (a) LEANDRO BERNARDINO DA SILVA respondeu a 36 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Bim dia professor e colegas. Manter o conceito de encapsulamento efetivo consiste na proteção dos seus dados e métodos, temos os métodos privado,público,protegido e implementação onde deverão ser respeitados suas particularidades de classes por uma questão de segurança,gerando assim a eficácia do sistema e contribuindo para reutilização de seus componentes.quando essas variáveis se referem ao mesmo tempo de execução a objetos de diversas classes temos então o porlimofismo.ainda temos como definição,sendo o nome de objetos diferentes em responder a mesma mensagem, Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 35 dias atrás Comentário da postagem de LEANDRO BERNARDINO DA SILVA Oi Leandro, Ok, obrigadopelas considerações Abaixo alguns questionamentos, para focarmos na pratica E a reflexão acerca da classificacao adequada para uma boa implementação dos 3 prinicipios, como pedia o enunciado? 1. Devemos definir atributos como privados ? por que? 2. Devemos definir todos os metodos de uma classe como privados ? por que? 3. se quisermos que um metodo seja herdado, como definir sua visibilidade ? Abs Marcelo Aluno (a) LEANDRO BERNARDINO DA SILVA respondeu a 36 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Editado por LEANDRO BERNARDINO DA SILVA em 21/05/2014 01:04 Boa noite professor e colegas. Manter o conceito de encapsulamento efetivo consiste na proteção dos seus dados e métodos, temos os métodos privado,público,protegido e implementação onde deverão ser respeitados suas particularidades de classes por uma questão de segurança,gerando assim a eficácia do sistema e contribuindo para reutilização de seus componentes.quando essas variáveis se referem ao mesmo tempo de execução a objetos de diversas classes temos então o porlimofismo,ainda temos como definição como sendo o nome dado a capacidade de objetos diferentes tem de responder a mesma mensagem. 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 10/17 Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 35 dias atrás Comentário da postagem de LEANDRO BERNARDINO DA SILVA Leandro Postagem duplicada, responda na primeira postagem Abs Marcelo Aluno (a) LEANDRO BATISTA NUNES CORREIA respondeu a 36 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Uma boa classificação de usabilidade é aquela que previne que o código seja usado de maneira não segura. Garantindo visibilidade somente ao que for necessário para seu funcionamento. Assim podemos manter seguros os dados armazenados nos membros da classe, sabendo que eles serão manipulados apenas dentro de sua classe especialista. Uma das vantagens de escrever um código com acesso restrito é que o usuário do código( ou programador front-end )terá que aprender apenas as definições da classe compartilhadas na interface, não precisando examinar a classe inteira para utilizar o código, poupando tempo na implementação. Uma boa modelagem dessa classe garantirá que ela poderá ser reutilizada em vários projetos, ou módulos do mesmo projeto, havendo necessidade de um complemento, podemos criar uma nova classe que herdará os métodos e atributos da classe original. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 35 dias atrás Comentário da postagem de LEANDRO BATISTA NUNES CORREIA Oi Leandro Batista] Obrigado. Abaixo 3 questionamentos, para fechar o entendimento E a reflexão acerca da classificacao adequada para uma boa implementação dos 3 prinicipios, como pedia o enunciado? 1. Devemos definir atributos como privados ? por que? 2. Devemos definir todos os metodos de uma classe como privados ? por que? 3. se quisermos que um metodo seja herdado, como definir sua visibilidade ? Abs Marcelo Aluno (a) LEANDRO BATISTA NUNES CORREIA respondeu a 34 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA 1) Sim, usualmente os atributos devem ser acessados pelo get e set. Porque assim os dados estarão sendo armazenados, validados e modificados apenas pela sua classe especialista. 2) Normalmente Não, tirando o método construtor que deve ser publico, se definirmos todos os métodos de uma classe como privados a classe ficaria isolada, Acredito que isso dependeria muito da regra de negócio e a finalidade dessa classe. 3) Devemos declara-lo como public ou protected. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 31 dias atrás Comentário da postagem de LEANDRO BATISTA NUNES CORREIA Show Leandro Voce construiu o conhecimento com efetividade. Bingo !! 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 11/17 aBS MARCELO Aluno (a) FERNANDO ANTONIO PINA DE SOUZA respondeu a 34 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Boa noite Professor, Respondendo ao exercício proposto: Inicialmente, vale destacar que a usabilidade está relacionada à qualidade da interação de sistemas com os usuários e depende de vários fatores, entre eles a flexibilidade e produtividade. Dentro de uma classe, atributos são os itens de dados e métodos, suas funções. Neste caso, uma boa classificação de usabilidade está relacionada à construção de interfaces de acesso bem definidas, que possibilitam fazer um efetivo reuso de objetos, sendo a reusabilidade e a extensibilidade formas de possibilitar a adaptação fácil às mudanças e a consequente redução dos custos de manutenção do sistema. Estas características estão relacionadas tanto ao efetivo encapsulamento quanto à herança e o polimorfismo adequados. Um exemplo relacionado ao reuso com a herança seria o fato de que desenvolvedores não precisariam redefinir atributos repetidas vezes, se estes atributos já fossem definidos um vez pela superclasse. Fontes: www2.dem.inpe.br/ijar/EngSofconceitos1.html Análise Orientada a Objetos, por Alexandre Melo Braga, disponível em https://xa.yimg.com/kq/groups/21646421/894559838/name/AOO-Notas+de+aula+- +parte+1.pdf Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 34 dias atrás Comentário da postagem de FERNANDO ANTONIO PINA DE SOUZA Fernando O foco aqui e uma analise de como classifiacar os atribtitos e metodo, para podermos implementar com efetividade - encapsulamento, heranca e polimorfimos explique o devemos e o que podemos fazer com cada tipo de visibilidade (privada, publica e protegida) em cada um dos 3 principios em discussão Agradeço Abs marcelo Aluno (a) FERNANDO ANTONIO PINA DE SOUZA respondeu a 32 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Boa noite Professor, Entenderia, por exemplo, em relação ao encapsulamento, que apenas parte da informação é disponibilizada para o usuário, sendo outra parte mantida oculta. A informação exposta seria a interface (especifica os limites de um objeto em termos das interações possíveis ou propriedades visíveis). A ocultação da dinâmica interna de um objeto seria uma ocultação de dados, sendo os atributos, neste caso, declarados como privados, não visíveis através da interface. Esse controle de acesso teria a função de proteger a integridade do objeto, pois quem acessa a interface não pode alterar diretamente os atributos privados do objeto. Se estes atributos fossem declarados como públicos, nenhuma parte do objeto estaria oculta para os usuários, podendo qualquer um com acesso a interface alterar diretamente todos os atributos do objeto. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 31 dias atrás 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 12/17 Comentário da postagem de FERNANDO ANTONIO PINA DE SOUZA Ok, fernando Ajustoi bem o comentario e atendeu aos objetivos pretendidos do encapsulamento, mas nao falou de como prover herança Abs Marcelo Aluno (a) VICTOR SAMPAIO DE CASTRO respondeu a 34 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Na minha empresa eu aprendi que é importante usar a o conceito de implementação para encapsular metodos e atributos. Por questão de segurança, é importante que os atributos de uma classe sejam acessados apenas getters and setters, nunca utilizando atributos publicos. Por meio desses métodos de get e set podemos tratar e manipular os atributos modificando-os em todoo sistema. Exemplo da minha aplicação. Recortei o codigo ao maximo .... Tem o facade e o Dao tmb. mas só com o action e a Bean ja da pra representar. public class UsuarioBean { private int idusuario; private String nome; private String login; private String senha; private String email; public int getIdusuario() { return idusuario; // E os outros get e set das outras variaveis acima ..... ----------------------------------------------------------------- Public class UsuarioAction public String incluirUsuario(){ UsuarioBean usuario = new UsuarioBean(); usuario.setNome(nome); usuario.setLogin(login); // Setando assim nome ao nome, com o set, e não diretamente no atributo, como poderia ser feito se fosse publico. Além de tudo que eu ja citei, eu imagino o caos que seria a nomeação de variaveis, se tudo fosse publico rs. abs Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 34 dias atrás Comentário da postagem de VICTOR SAMPAIO DE CASTRO Victor, Maravilha. Isso mesmo. Garante assim o encapsulamento. E quando queremos usar a heranca, como classificar os atributos e metodos? Abs Marcelo Aluno (a) MATHEUS SAMPAIO DE CASTRO respondeu a 33 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Eu classificaria a classe public, o metodo public, e o atributo privado. Pois foi assim que eu aprendi que deve ser. Porem no caso do atributo ser privado não teria como acessa-lo diretamente, teria que usar o get e set. Então se quisesse ter poder de modificar, e ter total controle de um atributo de uma superclasse, numa subclasse, teria que ser publico. Abs Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 31 dias atrás Comentário da postagem de MATHEUS SAMPAIO DE CASTRO Matheus Uma pena ter postado nas últimas 48 horas de forum, mesmo com as observações claramente estabelecidas no enunciado for forum. O motivo é que nossa interacão fica limitada. E a interação é de extrema valia nos fóruns temáticos. Ok. Isso memso, Obrigado por postar Abs Marcelo 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 13/17 Aluno (a) MARCIO OLIVEIRA BRITTES GUIMARAES respondeu a 33 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Boa noite segue meu comentário: Encapsulamento É a característica do objeto de esconder seus dados e suas operações dos outros objetos. As operações e os dados são encapsulados em um módulo chamado classe que pode ser visto como um pattern para criar objetos (instanciação). O usuário não se preocupa com a implementação dos métodos, mas apenas com a interface da classe, alcançando um alto grau de desacoplamento, uma vez que é possível alterar a implementação de um método sem alterar a interface. Herança e Polimorfismo Herança é um mecanismo importante quando um grupo de classes apresenta a mesma interface, mas a implementação interna dos métodos é diferente. Polimorfismo é uma característica em orientação a objetos que usa a hierarquia de objetos. O paper deixa muito a desejar na apresentação de Herança e Polimorfismo, possibilitando um entendimento errado para um leitor mais desatento. Portanto, tentou-se abordar os dois conceitos mais profundamente, embora de maneira rápida. Herança é um mecanismo que ajuda definir relações de subtipo e reusar código. Contudo herança e subtipo são mecanismos distintos e devem ter construtores diferentes nas linguagens de programação. Herança é um conceito muito poderoso, uma vez que possibilita que os desenvolvedores maximizem o uso dos métodos (comportamento) e dos dados (estrutura) dos objetos existentes. Pode-se entender herança, sob a ótica de linguagem de programação orientada a objetos, como sendo um mecanismo para construir classes a partir de classes existentes. O mecanismo de herança pode ser classificado de três maneiras independentes: Estático ou Dinâmico; Implícito ou Explícito; por Objeto ou por Grupo. Polimorfismo é a habilidade de diferentes objetos receberem a mesma mensagem e comportar-se de maneira diferente. Polimorfismo implica em criar uma interface pela qual serão recebidas mensagens determinando o comportamento do objeto. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 31 dias atrás Comentário da postagem de MARCIO OLIVEIRA BRITTES GUIMARAES Marcio Uma pena ter postado nas últimas 48 horas de forum, mesmo com as observações claramente estabelecidas no enunciado for forum. O motivo é que nossa interacão fica limitada. E a interação é de extrema valia nos fóruns temáticos. O foco nesse fórum não era a discussão sobre os conceitos de encapsulamento, herança e polimorfismos, ja discutidos no forum A, mas sim das analises de como deveriamos ou não agir para classificar corretamente a visibilidade de atributos e metodos, para que esses 3 conceitos possam ser implementados com qualidade. Sua postagem não atendeu aos objetivos aqui pretendidos. Abs Marcelo Aluno (a) FABIO AUGUSTO LAGO DE AQUINO FONSECA respondeu a 33 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Boa noite, Como muitos colegas citaram, encapsulamento é necessário por motivos de segurança. Porém, o desenvolvimento de manutenção do software tem muito a ganhar também. Quanto menor a interferencia de uma classe no funcionamento interno de outra classe, menor a cadeia de mudanças necessárias para qualquer modificação. Vamos supor que um sistema indexa produtos usando int, e com o tempo se torna necessária a troca por STRING. se a classe que acessa esses indexes, acessa diretamente o campo, será necessário um overhaul do sistema inteiro, porém, se for acessádo por metodo/função, apenas a classe em si devera ser atualizada. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 31 dias atrás Comentário da postagem de FABIO AUGUSTO LAGO DE AQUINO FONSECA Fabio Uma pena ter postado nas últimas 24 horas de forum, mesmo com as observações claramente estabelecidas no enunciado for forum. O motivo é que nossa interacão fica limitada. E a interação é de extrema valia nos fóruns temáticos. O foco nesse fórum não era a discussão sobre os conceitos de encapsulamento, herança e polimorfismos, ja discutidos no forum A, mas sim das analises de como deveriamos ou não agir para classificar corretamente a visibilidade de atributos e metodos, para que esses 3 conceitos possam ser implementados com qualidade. Sua postagem não atendeu aos objetivos aqui pretendidos. Abs Marcelo Aluno (a) MARCELO LIMA DE ARAUJO respondeu a 37 dias atrás Bom dia. 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 14/17 Professor e amigos de turma. Sendo encapsulamento uma técnica que faz com que detalhes internos do funcionamento dos métodos de uma classe permaneçam ocultos para os objetos. No uso de herança aumenta o acoplamento entre as classes, isto é, o quanto uma classe depende de outra. A relação entre classe mãe e filha é muito forte e isso acaba fazendo com que o programador das classes filhas tenha que conhecer a implementação da classe pai e vice-versa - fica difícil fazer uma mudança pontual no sistema. Pois teriamos que que mudar todas as classes filhas no caso de um certo tipo de mudança Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 37 dias atrás Comentário da postagem de MARCELO LIMA DE ARAUJO Marcelo Ok,,mas onde entra o foco de nosso forum , em sua postagem, ou seja a visibilidade de atributos e métodos para implementação desses 3 conceitos relevantes de OO? Abs Marcelo Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 37 dias atrás Comentário da postagem de MARCELO LIMA DE ARAUJO MarceloE como devemos usar os principios de visvilidade para não deixar que os problemas citados venham a acontecer? abs Marcelo Aluno (a) RAFAEL EVANGELISTA MATOS respondeu a 36 dias atrás Boa noite a todos. Visibilidade é a capacidade de um objeto fazer referência e utilizar métodos e valores de outro objeto. Assim, quando se especifica um método ou uma classe eles devem ser protegidos quanto ao acesso, mantendo vivo na programação o conceito de encapsulamento, e para isso usa-se a condição “private”. Já quando se deseja liberar o acesso feito de forma externa a classe, o que não é uma situação desejável, pois vai contra o conceito de encapsulamento, usa-se a condição “public”. Com a condição de visibilidade bem definida, teremos como implementar a herança, criando compartilhamento de atributos e operações entre classes específicas. Bem como, atribuir, através do polimorfismo, métodos específicos e que possuem a mesma identificação para cada classe derivada da superclasse, e com isso trazendo uma maior organização à programação. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 36 dias atrás Comentário da postagem de RAFAEL EVANGELISTA MATOS Oi Rafael, Mas se os metodos de uma classe forem todos privados, qual problema teremos ? Por que? Abs Marcelo Aluno (a) DIEGO AUGUSTO PEREIRA DE ANDRADE respondeu a 35 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Professor, bom dia! Desculpe em entrar no tópico do colega e na pergunta que o senhor fez pra ele, mas gostaria de tentar ajudar! Se todos os metodos forem privados o problema que teremos é que não conseguiremos ler informações de nenhuma classe nem haverá comunicação entre elas. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 35 dias atrás Comentário da postagem de DIEGO AUGUSTO PEREIRA DE ANDRADE Sem problemas, Diego. O forum tem esse proposito mesmo. Sinta-se, sempre a vontade. 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 15/17 Bingo !!!! Parabens pela percepção isso mesmo Obrigado pela intervenção. Rafael , entendeu ? Abs Aluno (a) RAFAEL EVANGELISTA MATOS respondeu a 35 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA Boa tarde. Complementando a resposta do colega Diego, que relatou sobre o problema que o método privado permite que ele seja acessado apenas pela classe que o implementa, impedindo o acesso das demais e ficando restrito apenas a sua própria classe. Acredito que para solucionar esse empecilho, faz-se uso dos métodos “get” e “set”. Certo??? Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 34 dias atrás Comentário da postagem de RAFAEL EVANGELISTA MATOS Rafael sim, somente quando for extritamente necessario. Abs Marcelo Aluno (a) MATHEUS SAMPAIO DE CASTRO respondeu a 35 dias atrás Algumas das vantagens que eu vejo em utilizar o que chamamos tecnicamente de "visibilidades de atributos e métodos"(mas que poderia ser chamado pela geração-facebook de: privacidade de cada "componente" de um sistema) são: diminuir o acoplamento entre as classes, para evitar que novos códigos resultem em modificações em inúmeros lugares. possibilitar(ou não) a utilização de um metodo de fora de sua classe, em diferentes contextos, resultando em um metodo adequado de utilizar o polimorfismo. Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 35 dias atrás Comentário da postagem de MATHEUS SAMPAIO DE CASTRO Oi Matheus, Na pratica E a reflexão acerca da classificacao adequada para uma boa implementação dos 3 prinicipios, como pedia o enunciado? 1. Devemos definir atributos como privados ? por que? 2. Devemos definir todos os metodos de uma classe como privados ? por que? 3. se quisermos que um metodo seja herdado, como definir sua visibilidade ? Abs Marcelo 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 16/17 Para Você Central de Mensagens Certificados Histórico Onde Ir Home Disciplinas Busca Avançada Mapa do Site Aluno (a) MATHEUS SAMPAIO DE CASTRO respondeu a 34 dias atrás Comentário da postagem de Corpo Docente: MARCELO VASQUES DE OLIVEIRA 1. Sim, para proteger o atributo. E também se você usar getters / setters você pode executar lógica sobre alterações ou acesso. Você pode validar a entrada, em vez de deduzir que ela está sempre correta. Você pode controlar quantas vezes o valor é buscado. Com menos palavras eu utilizaria o argumento de boas praticas de encapsulamento para justificar a utilização de atributos privados. Pois em um atributo publico, se você modifica algo nele, muito provavelmente teria que modificar em todos os lugares que utiliza-o, sendo ele privado, na maioria das vezes precisaria apenas mudar em um lugar, no get/set. 2. Não, na verdade o padrão é que os metodos sejam publicos. pq? Para que possam ser acessados de fora da classe. A não ser que seja requisitado que aquele metodo possa apenas ser manipulado dentro da sua respeciva clase. 3. Public! Abs Professor (a) MARCELO VASQUES DE OLIVEIRA respondeu a 34 dias atrás Comentário da postagem de MATHEUS SAMPAIO DE CASTRO Ola Matheus, Perfeito, atributo privado, garante o encspsulamento Se uma classe tiver todos os metodos como privados , ela perde a finalidade de ser, pois nao vai oferecer nenhum servi;o as demais classes. Protected Abs Marcelo 26/6/2014 Campus Virtual Estácio http://estacio.webaula.com.br/aluno/forum/comentarios_print.asp?CodTopico=779723&CodTurma=392777&CodComunidade=0 17/17 LMS webAula Versão 4.0. © Direitos Autorais Reservados. webAula
Compartilhar