O documento apresenta uma introdução aos conceitos e histórico da orientação a objetos, incluindo definições de classes, objetos e outros princípios. Também discute vantagens da abordagem orientada a objetos, preconceitos comuns, desenvolvimento orientado a objetos e linguagens de programação orientadas a objetos como C++ e Java.
O documento fornece uma introdução aos conceitos básicos de orientação a objetos, incluindo: (1) O que é orientação a objetos e seus principais conceitos como classes, objetos, herança e polimorfismo; (2) Como a orientação a objetos evoluiu através de linguagens de programação e metodologias; (3) Como a orientação a objetos facilita a reutilização de código e modelagem do mundo real.
O documento discute os principais conceitos da programação orientada a objetos, incluindo classes, objetos, herança, polimorfismo e encapsulamento. Também aborda tópicos como desenvolvimento de software, linguagens de programação e aplicações da programação orientada a objetos.
O documento descreve a evolução histórica das linguagens de programação, desde as primeiras linguagens em código de máquina até as linguagens orientadas a objetos modernas. Resume três pontos principais: 1) As primeiras linguagens de alto nível como FORTRAN deram um passo importante, mas não introduziram mudanças significativas no estilo de programação; 2) Linguagens estruturadas como C e Pascal permitiram escrever programas moderadamente complexos de maneira mais fácil, mas apresentavam limitações à medida que os projetos cresciam; 3
1) O documento discute programação orientada a objetos no C# usando padrões de projeto.
2) Apresenta um estudo de caso com classes Funcionário, FuncionárioHorista e Departamento para exemplificar conceitos como herança, encapsulamento e persistência.
3) O estudo de caso propõe o desenvolvimento em camadas MVC com uma camada adicional para persistência de objetos no banco de dados SQL Server.
O documento discute padrões de projeto de software. Apresenta uma introdução sobre o que são padrões de projeto e sua motivação. Também descreve conceitos básicos como atributos, problemas resolvidos e tipos de padrões.
O documento discute bancos de dados orientados a objetos, destacando que eles podem armazenar objetos de forma nativa, eliminando a necessidade de mapeamento objeto-relacional. Exemplos de bancos de dados orientados a objetos são apresentados, como DB4Objects.
Net uma revisão sobre a programação orientada a objetosLP Maquinas
Neste artigo vou revisar os conceitos chaves sobre o paradigma da programação orientada a objetos sem rodeios.
A Programação Orientada a Objetos (POO) é uma abordagem para desenvolvimento de software no qual a estrutura do software é baseada em objetos que interagem uns com os outros para realizar uma tarefa.
Obs: Você vai encontrar com freqüência a acróstico OOP - Oriented Object Programming.
Essa interação toma a forma de mensagens que são trocadas entre os objetos sendo que em res
O padrão Flyweight é um padrão estrutural que permite compartilhar objetos para reduzir o uso de memória. Ele é aplicável quando um sistema usa muitos objetos similares e grande parte dos estados dos objetos pode ser externalizada. O padrão divide os estados dos objetos em intrínsecos e extrínsecos e compartilha os objetos que contêm apenas estados intrínsecos.
O documento fornece uma introdução aos conceitos básicos de orientação a objetos, incluindo: (1) O que é orientação a objetos e seus principais conceitos como classes, objetos, herança e polimorfismo; (2) Como a orientação a objetos evoluiu através de linguagens de programação e metodologias; (3) Como a orientação a objetos facilita a reutilização de código e modelagem do mundo real.
O documento discute os principais conceitos da programação orientada a objetos, incluindo classes, objetos, herança, polimorfismo e encapsulamento. Também aborda tópicos como desenvolvimento de software, linguagens de programação e aplicações da programação orientada a objetos.
O documento descreve a evolução histórica das linguagens de programação, desde as primeiras linguagens em código de máquina até as linguagens orientadas a objetos modernas. Resume três pontos principais: 1) As primeiras linguagens de alto nível como FORTRAN deram um passo importante, mas não introduziram mudanças significativas no estilo de programação; 2) Linguagens estruturadas como C e Pascal permitiram escrever programas moderadamente complexos de maneira mais fácil, mas apresentavam limitações à medida que os projetos cresciam; 3
1) O documento discute programação orientada a objetos no C# usando padrões de projeto.
2) Apresenta um estudo de caso com classes Funcionário, FuncionárioHorista e Departamento para exemplificar conceitos como herança, encapsulamento e persistência.
3) O estudo de caso propõe o desenvolvimento em camadas MVC com uma camada adicional para persistência de objetos no banco de dados SQL Server.
O documento discute padrões de projeto de software. Apresenta uma introdução sobre o que são padrões de projeto e sua motivação. Também descreve conceitos básicos como atributos, problemas resolvidos e tipos de padrões.
O documento discute bancos de dados orientados a objetos, destacando que eles podem armazenar objetos de forma nativa, eliminando a necessidade de mapeamento objeto-relacional. Exemplos de bancos de dados orientados a objetos são apresentados, como DB4Objects.
Net uma revisão sobre a programação orientada a objetosLP Maquinas
Neste artigo vou revisar os conceitos chaves sobre o paradigma da programação orientada a objetos sem rodeios.
A Programação Orientada a Objetos (POO) é uma abordagem para desenvolvimento de software no qual a estrutura do software é baseada em objetos que interagem uns com os outros para realizar uma tarefa.
Obs: Você vai encontrar com freqüência a acróstico OOP - Oriented Object Programming.
Essa interação toma a forma de mensagens que são trocadas entre os objetos sendo que em res
O padrão Flyweight é um padrão estrutural que permite compartilhar objetos para reduzir o uso de memória. Ele é aplicável quando um sistema usa muitos objetos similares e grande parte dos estados dos objetos pode ser externalizada. O padrão divide os estados dos objetos em intrínsecos e extrínsecos e compartilha os objetos que contêm apenas estados intrínsecos.
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareCesar Rocha
A comunidade de desenvolvimento de software vem adotando cada vez mais os conceitos propostos pelos padrões de projeto no processo de desenvolvimento de software. Estudos reportam evidências de que esses padrões causam um impacto positivo na qualidade do software, mas em alguns casos a adoção de padrões de projeto pode ser inapropriada. Esse trabalho monográfico relata a origem e os fundamentos dos padrões de projeto, e busca evidenciar a importância da aplicação de padrões para obter a excelência e a qualidade desejadas para os sistemas de software. Através de uma pesquisa bibliográfica esse trabalho evidenciou que a aplicação de padrões de projeto na fase de desenvolvimento do software é um recurso positivo nos processos futuros de manutenção. Fatores como reusabilidade, modularidade, uso de interfaces, composição de objetos, baixo acoplamento e alta coesão são diretamente manipulados através dos padrões de projeto e consequentemente promovem melhorias na manutenabilidade. Apesar dos benefícios proporcionados, os padrões de projeto também podem ter efeitos negativos sobre os sistemas de software.
Este documento fornece uma introdução à análise orientada a objetos, discutindo conceitos como modelagem de domínio, modelagem eficiente, conhecimento compartilhado e implementação iterativa. Inclui exemplos de modelagem de sistemas como um simulador de rotas de rede.
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernateRicardo Rinco
Projeto apresentado à disciplina Trabalho de Conclusão de Curso do curso de Sistemas de Informação do Centro Universitário Padre Anchieta, sob a orientação do Peter Jandl Junior, como exigência parcial para a conclusão do curso.
Aplicações:
Código fonte - Java: https://github.com/ricardorinco/NHibernate.CoursesCenter
Código fonte - C#: https://github.com/ricardorinco/Hibernate.CoursesCenter
Bases de Dados:
Código fonte - MySQL: https://github.com/ricardorinco/MySQL.CoursesCenter
Código fonte - SQLServer: https://github.com/ricardorinco/SQLServer.CoursesCenter
O documento defende que o padrão DCI (Data Context Interaction) é melhor do que MVC para arquitetura de software orientada a objetos. Apresenta os princípios do DCI, como a separação de dados, contexto e interação, e argumenta que ele resolve problemas de composição encontrados em MVC.
Este documento fornece informações biográficas sobre Flávio Gomes da Silva Lisboa. Ele é um arquiteto, desenvolvedor, instrutor e especialista em história em quadrinhos que oferece serviços de consultoria. Suas principais áreas de atuação incluem arquitetura de software, orientação a objetos e padrões como MVC, DCI e injeção de dependências.
O documento discute conceitos de programação Java, comparando programação estruturada versus orientada a objetos, e características de programação linear, modularização, objetos, classes, atributos e subclasses.
O documento apresenta uma introdução sobre padrões de projeto, definindo-os como estruturas recorrentes no projeto de software orientado a objetos. Descreve brevemente os principais tipos de padrões (criação, estruturais e comportamentais) e alguns exemplos de cada um. Por fim, fornece referências adicionais sobre padrões de projeto.
UML, Linguagem de Modelagem Unificada, é um padrão para modelagem visual de software.
Neste tutorial abordamos como utilizar a UML para fazer especificação de software através de conjunto de modelos e diagramas.
A modelagem visual facilita o entendimento e a comunicação do 'o quê' precisa ser feito e 'como' deverá ser feito o software;
This document discusses chickens and chicken research. It describes several studies on chicken behavior and social structures. Key findings include that chickens live in social groups organized in a pecking order, and that chickens communicate with each other using vocalizations like "chicken" and physical signals like feather positions.
El documento describe la transición de una economía basada en la escasez y la propiedad a una economía basada en el conocimiento y la abundancia. En esta nueva economía del conocimiento, lo que se sabe es más valioso que lo que se posee, y los brokers del conocimiento ayudan a compartir ideas de manera viral para impulsar la innovación y la capacidad de respuesta de las empresas.
La investigación social es un proceso creativo donde el investigador explora el mundo social de manera interactiva y conceptualiza nuevas perspectivas. La sociedad influye en la investigación realizada en ella, y ha evolucionado de una sociedad cerrada de información a una sociedad abierta de comunicación. Una investigación exitosa requiere de una metodología que guíe las operaciones de manera reflexiva y estratégica.
[Salta] Facilitando la Innovación en un mundo complejo | Portafolio Software ...IBMSSA
El documento describe varias iniciativas de empresas y gobiernos para optimizar el uso de recursos a través de sistemas automatizados de gestión. Una compañía de energía está implementando un sistema que permite a clientes y proveedores controlar mejor el uso de energía. La autoridad de transporte de Singapur está mejorando la red de transporte público agregando opciones de pago y monitoreando la información para mejorar los horarios y rutas. El documento también promueve las soluciones de software de IBM para habilitar la optimización de procesos, la int
Este documento describe las ventajas y desventajas de los edublogs, así como ejemplos de su uso en el aula. Entre las ventajas se encuentran que fomentan la lectura, la escritura y el pensamiento crítico; permiten que los estudiantes sean protagonistas de su propio aprendizaje; y que las fronteras del aula se expanden. Algunos desafíos incluyen el plagio, la suplantación de identidad y los "trolls". El documento también proporciona ejemplos de cómo los profesores han utilizado
IMA conference. Marie Spiers Combating fuel Povertycsiarkiewicz
Fuel poverty is defined as needing to spend more than 10% of household income on energy costs to heat the home adequately. Vulnerable groups like the elderly are disproportionately affected by fuel poverty which can negatively impact physical and mental health. There are various schemes to assist those in fuel poverty including financial assistance programs, energy efficiency measures, debt repayment plans, and priority services to prevent utility disconnections.
Transgénicos hablemos claro versión marzo 2013Fernando Doylet
1) Varios grupos sociales y académicos envían una carta abierta al Presidente Correa para debatir sobre los transgénicos.
2) Se muestran abiertos al diálogo y presentan argumentos científicos en contra de los transgénicos, indicando que no han resuelto problemas de hambre y que plantean riesgos a la salud y el ambiente.
3) Piden hablar claramente sobre los mitos y verdades de los transgénicos, desmintiendo afirmaciones como su alta productividad o su capacidad para resist
El documento presenta un proyecto ambiental para una institución educativa con el objetivo general de construir una cultura ambiental a través de la sensibilización de la comunidad educativa. Los objetivos específicos incluyen infundir actitudes ecológicas, buscar que la institución sea un espacio agradable, diseñar acciones para el manejo de basuras y vincular entidades externas. El proyecto describe actividades como campañas de aseo, reciclaje y charlas educativas.
The document describes the collapse and destruction of many historic buildings and areas in Johannesburg, South Africa. It provides photos showing the dilapidated state of locations like the Wits Drill Hall, Bree Street, Yeoville, Hillbrow, Joubert Park, and Oppenheimer Park. Many buildings that were once popular venues or landmarks, like hotels, shops, and statues, are now abandoned ruins with smashed windows, gutted interiors, and trash in the streets. The document laments the decline of Johannesburg under the "New South Africa."
The document is a resume for Kenya Taylor seeking a position as a surgical technician. It outlines her skills in pre-operative, intra-operative, and post-operative procedures. Taylor has experience in various healthcare roles including as an operations counselor, residential counselor, and staff counselor where she assisted with daily living activities and safety checks. She also has experience in the Navy and Army maintaining equipment and inventory. Her education includes training as a surgical technician and medical coder.
The document defines and describes various camera shot types used in filmmaking, including:
- Extreme wide shots show a subject's surroundings from far away with the subject not visible.
- Establishing shots provide context by showing the entire setting of a new scene.
- Close-ups emphasize a subject's emotions by showing facial expressions in detail.
- Cutaways are shots of something other than the main action, used as editing buffers or to add interest.
- Two-shots introduce the relationship between two subjects by showing them comfortably framed together.
O documento discute como o hábito de vida da comunidade escolar afeta a saúde. A justificativa é que muitas crianças apresentam sintomas de problemas de saúde. O objetivo é intensificar o estudo de medidas para uma vida saudável e ampliar o conhecimento sobre hábitos de vida de diferentes culturas.
O documento discute o ministério de profeta no Antigo e Novo Testamento. No Antigo Testamento, os profetas falavam sob inspiração divina para transmitir mensagens de Deus ao seu povo. No Novo Testamento, o profeta tinha a função de proclamar e interpretar a Palavra de Deus para edificar a igreja. O documento também aborda como distinguir um verdadeiro profeta de um falso.
Aplicação de Padrões de Projeto para a melhoria da manutenabilidade de softwareCesar Rocha
A comunidade de desenvolvimento de software vem adotando cada vez mais os conceitos propostos pelos padrões de projeto no processo de desenvolvimento de software. Estudos reportam evidências de que esses padrões causam um impacto positivo na qualidade do software, mas em alguns casos a adoção de padrões de projeto pode ser inapropriada. Esse trabalho monográfico relata a origem e os fundamentos dos padrões de projeto, e busca evidenciar a importância da aplicação de padrões para obter a excelência e a qualidade desejadas para os sistemas de software. Através de uma pesquisa bibliográfica esse trabalho evidenciou que a aplicação de padrões de projeto na fase de desenvolvimento do software é um recurso positivo nos processos futuros de manutenção. Fatores como reusabilidade, modularidade, uso de interfaces, composição de objetos, baixo acoplamento e alta coesão são diretamente manipulados através dos padrões de projeto e consequentemente promovem melhorias na manutenabilidade. Apesar dos benefícios proporcionados, os padrões de projeto também podem ter efeitos negativos sobre os sistemas de software.
Este documento fornece uma introdução à análise orientada a objetos, discutindo conceitos como modelagem de domínio, modelagem eficiente, conhecimento compartilhado e implementação iterativa. Inclui exemplos de modelagem de sistemas como um simulador de rotas de rede.
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernateRicardo Rinco
Projeto apresentado à disciplina Trabalho de Conclusão de Curso do curso de Sistemas de Informação do Centro Universitário Padre Anchieta, sob a orientação do Peter Jandl Junior, como exigência parcial para a conclusão do curso.
Aplicações:
Código fonte - Java: https://github.com/ricardorinco/NHibernate.CoursesCenter
Código fonte - C#: https://github.com/ricardorinco/Hibernate.CoursesCenter
Bases de Dados:
Código fonte - MySQL: https://github.com/ricardorinco/MySQL.CoursesCenter
Código fonte - SQLServer: https://github.com/ricardorinco/SQLServer.CoursesCenter
O documento defende que o padrão DCI (Data Context Interaction) é melhor do que MVC para arquitetura de software orientada a objetos. Apresenta os princípios do DCI, como a separação de dados, contexto e interação, e argumenta que ele resolve problemas de composição encontrados em MVC.
Este documento fornece informações biográficas sobre Flávio Gomes da Silva Lisboa. Ele é um arquiteto, desenvolvedor, instrutor e especialista em história em quadrinhos que oferece serviços de consultoria. Suas principais áreas de atuação incluem arquitetura de software, orientação a objetos e padrões como MVC, DCI e injeção de dependências.
O documento discute conceitos de programação Java, comparando programação estruturada versus orientada a objetos, e características de programação linear, modularização, objetos, classes, atributos e subclasses.
O documento apresenta uma introdução sobre padrões de projeto, definindo-os como estruturas recorrentes no projeto de software orientado a objetos. Descreve brevemente os principais tipos de padrões (criação, estruturais e comportamentais) e alguns exemplos de cada um. Por fim, fornece referências adicionais sobre padrões de projeto.
UML, Linguagem de Modelagem Unificada, é um padrão para modelagem visual de software.
Neste tutorial abordamos como utilizar a UML para fazer especificação de software através de conjunto de modelos e diagramas.
A modelagem visual facilita o entendimento e a comunicação do 'o quê' precisa ser feito e 'como' deverá ser feito o software;
This document discusses chickens and chicken research. It describes several studies on chicken behavior and social structures. Key findings include that chickens live in social groups organized in a pecking order, and that chickens communicate with each other using vocalizations like "chicken" and physical signals like feather positions.
El documento describe la transición de una economía basada en la escasez y la propiedad a una economía basada en el conocimiento y la abundancia. En esta nueva economía del conocimiento, lo que se sabe es más valioso que lo que se posee, y los brokers del conocimiento ayudan a compartir ideas de manera viral para impulsar la innovación y la capacidad de respuesta de las empresas.
La investigación social es un proceso creativo donde el investigador explora el mundo social de manera interactiva y conceptualiza nuevas perspectivas. La sociedad influye en la investigación realizada en ella, y ha evolucionado de una sociedad cerrada de información a una sociedad abierta de comunicación. Una investigación exitosa requiere de una metodología que guíe las operaciones de manera reflexiva y estratégica.
[Salta] Facilitando la Innovación en un mundo complejo | Portafolio Software ...IBMSSA
El documento describe varias iniciativas de empresas y gobiernos para optimizar el uso de recursos a través de sistemas automatizados de gestión. Una compañía de energía está implementando un sistema que permite a clientes y proveedores controlar mejor el uso de energía. La autoridad de transporte de Singapur está mejorando la red de transporte público agregando opciones de pago y monitoreando la información para mejorar los horarios y rutas. El documento también promueve las soluciones de software de IBM para habilitar la optimización de procesos, la int
Este documento describe las ventajas y desventajas de los edublogs, así como ejemplos de su uso en el aula. Entre las ventajas se encuentran que fomentan la lectura, la escritura y el pensamiento crítico; permiten que los estudiantes sean protagonistas de su propio aprendizaje; y que las fronteras del aula se expanden. Algunos desafíos incluyen el plagio, la suplantación de identidad y los "trolls". El documento también proporciona ejemplos de cómo los profesores han utilizado
IMA conference. Marie Spiers Combating fuel Povertycsiarkiewicz
Fuel poverty is defined as needing to spend more than 10% of household income on energy costs to heat the home adequately. Vulnerable groups like the elderly are disproportionately affected by fuel poverty which can negatively impact physical and mental health. There are various schemes to assist those in fuel poverty including financial assistance programs, energy efficiency measures, debt repayment plans, and priority services to prevent utility disconnections.
Transgénicos hablemos claro versión marzo 2013Fernando Doylet
1) Varios grupos sociales y académicos envían una carta abierta al Presidente Correa para debatir sobre los transgénicos.
2) Se muestran abiertos al diálogo y presentan argumentos científicos en contra de los transgénicos, indicando que no han resuelto problemas de hambre y que plantean riesgos a la salud y el ambiente.
3) Piden hablar claramente sobre los mitos y verdades de los transgénicos, desmintiendo afirmaciones como su alta productividad o su capacidad para resist
El documento presenta un proyecto ambiental para una institución educativa con el objetivo general de construir una cultura ambiental a través de la sensibilización de la comunidad educativa. Los objetivos específicos incluyen infundir actitudes ecológicas, buscar que la institución sea un espacio agradable, diseñar acciones para el manejo de basuras y vincular entidades externas. El proyecto describe actividades como campañas de aseo, reciclaje y charlas educativas.
The document describes the collapse and destruction of many historic buildings and areas in Johannesburg, South Africa. It provides photos showing the dilapidated state of locations like the Wits Drill Hall, Bree Street, Yeoville, Hillbrow, Joubert Park, and Oppenheimer Park. Many buildings that were once popular venues or landmarks, like hotels, shops, and statues, are now abandoned ruins with smashed windows, gutted interiors, and trash in the streets. The document laments the decline of Johannesburg under the "New South Africa."
The document is a resume for Kenya Taylor seeking a position as a surgical technician. It outlines her skills in pre-operative, intra-operative, and post-operative procedures. Taylor has experience in various healthcare roles including as an operations counselor, residential counselor, and staff counselor where she assisted with daily living activities and safety checks. She also has experience in the Navy and Army maintaining equipment and inventory. Her education includes training as a surgical technician and medical coder.
The document defines and describes various camera shot types used in filmmaking, including:
- Extreme wide shots show a subject's surroundings from far away with the subject not visible.
- Establishing shots provide context by showing the entire setting of a new scene.
- Close-ups emphasize a subject's emotions by showing facial expressions in detail.
- Cutaways are shots of something other than the main action, used as editing buffers or to add interest.
- Two-shots introduce the relationship between two subjects by showing them comfortably framed together.
O documento discute como o hábito de vida da comunidade escolar afeta a saúde. A justificativa é que muitas crianças apresentam sintomas de problemas de saúde. O objetivo é intensificar o estudo de medidas para uma vida saudável e ampliar o conhecimento sobre hábitos de vida de diferentes culturas.
O documento discute o ministério de profeta no Antigo e Novo Testamento. No Antigo Testamento, os profetas falavam sob inspiração divina para transmitir mensagens de Deus ao seu povo. No Novo Testamento, o profeta tinha a função de proclamar e interpretar a Palavra de Deus para edificar a igreja. O documento também aborda como distinguir um verdadeiro profeta de um falso.
O documento fornece informações sobre uma pós-graduação em Web oferecida pelo Senac Tito em São Paulo, Brasil. Ele discute brevemente as principais tecnologias da Web como HTML, CSS e JavaScript, e fornece estatísticas sobre o uso da Web no Brasil. O documento também lista vários recursos e sites relacionados à Web.
Informe del perfil de los usuarios de Twitter en España en 2016 http://www.christiandve.com/2016/10/perfil-usuario-twitter-espana-resultados/ basado en una encuesta, incluyendo sexo, edades, comunidades autónomas, niveles de estudios, situación laboral, perfiles demográficos, su relación con el social media, nivel de ingresos, antigüedad de la cuenta, su comprensión de Twitter, número de seguidores y seguidos, qué hacen cuando alguien empieza a seguirte, por qué dejas de seguir en Twitter, si gusta a los tuiteros encontrar empresas en Twitter, si siguen a alguna, cuántos tuits esperan recibir de una empresa, qué tipo de contenidos interesan, la opinión de si las marcas escuchan o no en Twitter, cuáles son los objetivos en Twitter, si piden ayuda a través de Twitter para tomar decisiones, cuántas veces entran en Twitter al día, cuánto tiempo pasan en Twitter, cuándo se conectan, desde qué dispositivos, si han cambiado la forma de usar Twitter y si lo utilizan más o menos que en el pasado, si siguen a influencers, si comprarían en Twitter, cuántos tuits mandan al día, qué tipo de contenidos suelen difundir más, que herramientas usan, si usan los DMs y la ampliación a 10.000 caracteres les parece útil, si usan las listas y para qué, si creen que Twitter da demasiada información, cómo ven el futuro de Twitter, qué opinan del soporte de Twitter como empresa, si es eficiente o no en la percepción de los tuiteros el sistema para denunciar una cuenta, si les gustaría que se quitase el límite de 140 caracteres, si usan los stickers, Twitter Ads y Twitter Analytics,
http://www.christiandve.com/2016/10/perfil-usuario-twitter-espana-resultados/
Gsm lazzaro emotion games slides 100n20120620Nicole Lazzaro
This document discusses how to design games and gamified systems to elicit emotions from players in order to increase engagement. It outlines four keys to fun - easy fun, hard fun, people fun, and serious fun - and provides examples for each that leverage novelty, challenge, social interaction, and finding meaning or purpose to create different emotional experiences for players. The overall message is that focusing on emotion, not just points and badges, is important for driving player engagement.
Sam 4 keys_to_fun_xeo_design_slides_100_nl20140304Nicole Lazzaro
This document appears to be from XEODesign, a company that focuses on player experience design and fun. It contains over 50 pages discussing different types of fun, including easy fun, hard fun, people fun, and serious fun. It provides examples of each type and discusses how to design experiences and games to incorporate different kinds of fun. The document emphasizes unlocking human potential through designing playful and meaningful experiences.
The Science of Fun: 3 Ways Games Make us Happier and Save the World GSummit 2014Nicole Lazzaro
Change is hard. Advances in game design and neuroscience can make it easy. Millennium of evolution gives us an amazing system for acquiring behavior good and bad. The rush of positive emotions such as dopamine (reward), endorphin (euphoria), and oxytocin (trust) do daily battle with bad boys such as cortisol (stress). The activities we engage in for these daily battles tune our behavior. The challenge is that the cognitive rational self that sets our goals is not the same brain system that deals out the chemicals that make us feel good. Serious game designers and Gamifciation experts ignore this battle at their peril. Specially designed games can hack your brain to turn vicious cycles into virtus ones to help you lose weight, get smarter, and even fight climate change.
Come and explore this playful splash into 3 specific ways the fun of games can rewire your brain to be happier, healthier, and primed to work together to save the planet.
O documento discute dois tópicos: (1) Paradigma de Orientação a Objetos, introduzindo seus conceitos-chave como objeto, classe e encapsulamento; (2) Persistência de dados via JDBC, explicando os tipos de drivers JDBC e fornecendo um exemplo básico de uso do JDBC.
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
Características da Programação Orientada por Objetos (POO).
Conceito de Classe, Atributos, Métodos, e Eventos.
Conceito de Objeto.
Conceito de Encapsulamento.
Conceito de Visibilidade de Classes, Métodos e Atributos.
Diagramas de Classe.
O ambiente de trabalho do Visual C#.
Objetos básicos e outras características básicas da linguagem do Visual C# e respetivo ambiente de trabalho.
1) O documento introduz conceitos fundamentais da programação orientada a objetos como classes, objetos, encapsulamento, herança e polimorfismo.
2) A programação orientada a objetos surgiu para permitir a reutilização de código através da criação de "componentes de software" análogos aos componentes de hardware.
3) Classes definem tipos de objetos e contêm atributos e métodos, enquanto objetos são instâncias concretas de classes.
O documento descreve o modelo orientado a objetos, incluindo sua definição, onde é usado, exemplos de diagramas, e vantagens e desvantagens. Ele fornece detalhes sobre como objetos representam entidades do mundo real com estados e comportamentos, e como são organizados em classes hierárquicas. Exemplos de sistemas de gerenciamento de banco de dados orientados a objetos comerciais e de código aberto são listados, juntamente com suas linguagens suportadas.
O documento discute a linguagem de programação Java e programação orientada a objetos. Apresenta Java como uma linguagem rápida, segura e confiável usada em muitos aplicativos e sites. Explora os conceitos de programação orientada a objetos como classes, atributos, métodos e como objetos interagem. Define objetos, classes, atributos e métodos como elementos centrais da programação orientada a objetos.
O documento discute os paradigmas de programação, definindo-os como estilos de programação. Apresenta os paradigmas funcional, lógico, procedural e orientado a objetos, destacando as semelhanças e diferenças entre o paradigma procedural e orientado a objetos.
O documento discute os paradigmas de programação, definindo-os como estilos de programação. Apresenta os paradigmas funcional, lógico, procedural e orientado a objetos, destacando as semelhanças e diferenças entre o paradigma procedural e orientado a objetos.
Os principais conceitos da programação orientada a objetos são: Classe, Objeto, Atributo, Método, Mensagem, Herança, Encapsulamento e Polimorfismo. A orientação a objetos modela o mundo real através destes conceitos, representando entidades como classes e seus estados e comportamentos como atributos e métodos.
O documento fornece uma introdução aos conceitos fundamentais de engenharia de software, incluindo:
1) Uma definição de software e suas características como invisibilidade, complexidade e mutabilidade;
2) Os principais modelos de processo de desenvolvimento de software e a importância da modelagem;
3) Os paradigmas orientados a objetos que dominam o desenvolvimento de software atual.
UML é uma linguagem padrão para modelagem de sistemas orientados a objetos. Apresenta diagramas para visualizar, especificar, construir e documentar aspectos estruturais e comportamentais de um sistema, incluindo classes, relacionamentos, casos de uso e sequências de eventos.
O documento fornece uma introdução sobre engenharia de software, abordando os seguintes pontos em menos de 3 frases:
1) Define software e suas características como invisibilidade, complexidade e mutabilidade.
2) Apresenta os principais modelos de desenvolvimento de software, paradigmas como orientação a objetos, e conceitos como classe, objeto e mensagem.
3) Discutem princípios da engenharia de software como encapsulamento e polimorfismo aplicados na modelagem orientada a objetos.
Este documento é uma apostila para um curso de extensão sobre MFC (Microsoft Foundation Classes) e apresenta conceitos básicos de programação orientada a objetos. O documento discute a história da programação orientada a objetos, princípios como encapsulamento e herança, e conceitos como classe, objeto, método e mensagem.
O documento introduz conceitos fundamentais de programação orientada a objetos, incluindo: (1) cenários de desenvolvimento OO que facilitam entendimento do usuário e reutilização de código; (2) histórico da OO desde 1967; (3) definição de objetos, classes, atributos, métodos e mensagens que formam a base da programação OO.
4 semestre trabalho individual analise e desenvolvimento de sistemas 2014WANDERSON JONER
O documento discute banco de dados orientado a objetos, incluindo sua história, recursos técnicos, vantagens e desvantagens. Também aborda ORM e como desenvolver usando modelo orientado a objetos com banco de dados relacional.
Criando Framework - Conceitos, Estratégias e DicasNorton Guimarães
O documento discute conceitos e estratégias para criação de frameworks. Ele explica que frameworks são sistemas incompletos que podem ser adaptados para reduzir esforços de desenvolvimento e define características como classes cooperantes e hotspots/frozen spots. O documento fornece dicas como entender bibliotecas versus frameworks, aplicar o Princípio de Hollywood e diferenciar componentes. Ele também discute motivações para criação de frameworks e apresenta uma proposta de metodologia em sete passos.
O documento apresenta o professor Lucas Simões Maistro e discute as tendências do mercado de sistemas web, o que é a linguagem PHP e suas vantagens, como simplicidade, adaptabilidade e interoperabilidade. Apresenta exemplos básicos de scripts em PHP, incluindo o uso de formulários, variáveis, condicionais e laços.
O documento discute banco de dados orientados a objetos, incluindo sua aplicação, mecanismo de funcionamento e diferenças em relação a bancos de dados relacionais. Também aborda ORM (mapeamento objeto-relacional), como desenvolver usando modelo orientado a objetos com banco de dados relacional e ferramentas ORM disponíveis.
O documento discute banco de dados orientado a objetos, incluindo sua história, recursos técnicos, vantagens e desvantagens em comparação a bancos de dados relacionais. Também aborda aplicações de bancos de dados orientados a objetos, o ODMG e desenvolvimentos recentes na área.
O documento descreve uma palestra sobre programação orientada a aspectos em PHP. O palestrante é Flávio Gomes da Silva Lisboa e ele trabalha no Serpro, uma empresa de tecnologia da informação do governo brasileiro que utiliza PHP em diversos sistemas e projetos. A palestra irá abordar o que são aspectos, como aplicá-los no PHP e as novidades sobre o assunto na versão 5.4 do PHP.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
3 oo-concepts
1. Agenda
!
Introdução a OO
!
Conceitos de Orientação
a Objetos
!
!
!
!
!
!
Histórico
Motivos que influenciaram
Vantagens da OO
Áreas de aplicação
O que é a Orientação a Objetos?
Preconceitos sobre a OO
Desenvolvimento OO
Linguagens de Programação OO
Cleidson Souza - cdesouza@ufpa.br
Departamento de Informática
Universidade Federal do Pará
1
Informática - UFPA
2
Histórico
!
Paradigma de Objetos
!
Classe e Objetos
Encapsulamento
Herança
Polimorfismo
Acoplamento Dinâmico
Classes Abstratas
Delegação
MetaClasses
Bibliografia
!
!
!
!
!
!
!
Informática - UFPA
Histórico(2)
Linguagens de Programação
!
Simula 67 : linguagem projetada para simulação.
" Família de linguagens Smalltalk. Smalltalk-72 e 80.
" Maior divulgação a partir de 1986 com o 1o Workshop em
Programação Orientada a Objetos e a conferência ObjectOriented Programming Languages, Systems and Applications
(OOPSLA).
" C++
" Java
"
–
–
–
–
–
!
!
!
Informática - UFPA
Metodologias
Surgiram devido a incompatibilidade das abordagens
estruturadas com a Programação Orientada a Objetos.
" Exemplo de metodologias:
"
3
!
!
!
4
Coad - Yourdon (1990)
OMT (1991)
OOSE (1992)
Fusão (1995)
UML (1996) [notação]
Banco de Dados
Sistemas Operacionais
...
Informática - UFPA
2. Motivos que influenciaram
!
!
!
Vantagens da Tecnologia de Objetos
Avanços na tecnologia de arquiteturas de
computadores, suportando sofisticados ambientes de
programação e interfaces homen-máquina.
Avanços na área de linguagens de programação
como modularização, ocultamento de informação,
etc.
Crise do Software: termo utilizado para descrever
problemas associados ao modo como o software é
desenvolvido, como é feita a manutenção e como
acompanhar a demanda por mais software
[Pressman, 1995].
5
Informática - UFPA
!
!
!
7
Mais fáceis de entender e manter.
Pequenas mudanças nos requisitos não implicam em
alterações massivas no sistema em desenvolvimento.
"
6
Implementação de Tipos Abstratos de Dados;
Informática - UFPA
O que é a Orientação a Objetos ?
!
O paradigma de objetos baseia-se nos seguintes
conceitos:
"Classes
"Objetos
"Herança
"Polimorfismo
e
"Binding Dinâmico
conjunto de regras que
descrevem como resolver
fronteira. Um paradigma
coordenar a maneira como
!
Informática - UFPA
A decomposição é baseada em um particionamento
natural; e
"
!
Descrevem de maneira mais precisa os dados;
"
É um paradigma para o desenvolvimento de
software que baseia-se na utilização de componentes
individuais (objetos) que colaboram para construir
sistemas mais complexos. A colaboração entre os
objetos é feita através do envio de mensagens.
Um paradigma é um
estabelecem fronteiras e
problemas dentro desta
ajuda-nos a organizar a e
olhamos o mundo.
Os modelos refletem o mundo real de maneira mais
aproximada:
"
O que é a Orientação a Objetos ?
!
Facilita a reutilização de código;
8
Cada um destes conceitos será abordado a seguir.
Informática - UFPA
3. “Preconceitos” sobre Orientação a Objetos
!
!
9
A orientação a objetos não é uma metodologia para o
desenvolvimento de interfaces gráficas amigáveis, ou
seja, o paradigma de objetos não está
necessariamente relacionada a programação visual;
!
Padrões de projeto não são necessariamente
abordagens relacionadas ao paradigma de objetos;
!
A orientação a objetos não garante a
reutilização, ela oferece mecanismos para que
isso ocorra, mas sempre será função do
desenvolvedor garantir isso.
A orientação a objetos não elimina a necessidade de
implementar os sistemas, e nem está relacionadas
apenas a fase de implementação;
Informática - UFPA
Desenvolvimento Orientado a Objetos
!
Análise Orientada a Objetos: É o processo de
construção de modelos do domínio do problema,
identificando e especificando um conjunto de objetos
que interagem e comportam-se conforme os
requisitos estabelecidos para o sistema.
!
Projeto Orientado a Objetos: é o processo de geração
de uma especificação detalhada do software a ser
desenvolvido, de tal forma que esta especificação
possa levar a direta implementação no ambiente alvo.
11
“Preconceitos” (2)
Informática - UFPA
10
Informática - UFPA
Desenvolvimento Orientado a Objetos
!
!
12
Programação Orientada a Objetos: é um modelo de
programação que baseia-se em conceitos como
classes, objetos, herança, etc. Seu objetivo é a
resolução de problemas baseada na identificação de
objetos e o processamento requerido por estes
objetos, e então na criação de simulações destes
objetos.
A programação é obtida através da definição de
classes e criação de hierarquias, nas quais
propriedades comuns são transmitidas das
superclasses para as subclasses através do
mecanismo de herança.
Informática - UFPA
4. Desenvolvimento Orientado a Objetos
!
13
Objetos destas classes são instanciados tal que a
execução do programa é vista como um conjunto de
objetos relacionados que se comunicam enviando
mensagens uns para os outros.
Informática - UFPA
Linguagens Orientadas a Objetos
!
15
Além da distinção entre linguagens baseadas em
objetos e linguagens orientadas a objetos, existe uma
outra distinção que classifica as linguagens
orientadas a objetos em:
" Híbridas: São linguagens que originalmente não
foram projetadas orientadas a objetos, mas que
passaram a incorporar os conceitos deste
paradigma. Ex: C++ e Object Pascal
" Puras: São linguagens que foram projetadas
originalmente orientadas a objetos. Ex: Smalltalk e
Java.
Informática - UFPA
Linguagens Orientadas a Objetos
!
Na literatura existe uma distinção entre linguagens
baseadas em objetos e linguagens orientadas a
objetos:
" Uma linguagem é baseada em objetos quando ela
fornece apoio somente ao conceito de objetos.
Exemplo: Ada e Visual Basic
" Uma linguagem é orientada a objetos quando ela
fornece apoio a objetos, e requer que objetos sejam
instâncias de classes. Além disso, um mecanismo
de herança deve ser oferecido. Ex: C++, Java e
Smalltalk.
14
Informática - UFPA
Linguagens Orientadas a Objetos
Podemos identificar similaridades entre a programação
procedural (ou imperativa) e a programação orientada a
objetos.
!
!
!
!
!
!
16
P a r a d i g m a
Procedual
Tipos de Dados
Variável
Função / Procedimento
Chamada de Função
!
!
!
!
!
Paradigma
Objetos
de
Classes
Objeto / Instância
Operação / Método Serviço
Envio de Mensagem
Informática - UFPA
5. Objetos
!
Objetos
Informalmente um objeto representa uma entidade,
tanto física quanto conceitual ou de software.
!
Exemplos:
Entidade Física: caminhão, carro, bicicleta, etc.
" Entidade Conceitual: processo químico, matrícula, etc
" Entidade de Software: lista encadeada, arquivo, etc.
"
!
Objetos são implementações de Tipos Abstratos de
Dados (TAD’s). TAD’s, um conceito da área de
Linguagens de Programação, são entidades que
encapsulam dados e operações associadas que
manipulam esses dados.
Evolução de Tipos de Dados
Assembler: não possui tipos,
" Fortran: primeiro tipos primitivos,
" Pascal: tipos agregados de dados;
" Simula: associação de tipos e operações.
"
!
Podemos afirmar que um objeto é um conceito,
abstração, ou entidade com limites bem definidos e
um significado para a aplicação.
17
Informática - UFPA
Objetos
18
Informática - UFPA
Objetos - Características
!
ação
Variáveis representando o estado interno do objeto
são chamadas variáveis de instância ou atributos. As
operações são chamadas de métodos.
Objeto geométrico
2
Atributos
Op
5
O per
ação
!
Exemplo
Operação 1
O per
Os dados de um objeto são totalmente escondidos e
protegidos de outros objetos. A única maneira de
acessá-los é através da invocação de uma operação
declarada na interface pública do objeto. A interface
pública de um objeto consiste no conjunto de
operações que um cliente do objeto pode acessar;
cor:
posição:
era
ção
3
O
per
aç
ão
4
selecionar(p: Ponto): boolean
girar(Ângulo: real)
mover(delta: coord)
19
Informática - UFPA
20
Informática - UFPA
6. Objetos - Características
Encapsulamento
Comunicação entre Objetos
O per
ação
5
definidos na sua interface pública;
ão
Atributos
açã
er
Op
3
açã
o4
Op
er
açã
o
o
21
Informática - UFPA
o4
Op
er
açã
Encapsulamento (2)
" Não
uma classe;
22
!
código cliente pode usar apenas a interface para
a operação;
"A
implementação do objeto pode mudar, para
corrigir erros, aumentar performance, etc sem que
seja necessário modificar o código do cliente;
Implementação
sem
uma
usar
public class Lista{
public int dados[];
public int tamanho;
public Lista(int n) {
dados = new int[n];
manutenção é mais fácil e menos custosa; e
tamanho = 0;
um programa legível e bem estruturado.
Informática - UFPA
de
Encapsulamento:
}
}
23
Informática - UFPA
Lista
"O
" Cria
se deve permitir acesso direto aos atributos de
Exemplo de Encapsulamento
Benefícios
"A
capacidade de um objeto possuir uma parte
privada, acessível somente através dos métodos
er
Op
3
O per
ação
5
"A
Um objeto comunica-se com outro através de
mensagens que identificam operações a serem
realizadas no segundo objeto.
!
Esconder os detalhes da implementação de um objeto
aç
O per
2
Operação
1
ão
Atributos
!
é chamado encapsulamento.
aç
O per
2
Operação
1
24
public static void
main(String args[]) {
Lista al = new Lista(5);
al.dados[0]=0;
al.tamanho++;
al.dados[1]=1;
al.tamanho++;
if (al.tamanho>=2) {
System.out.println("Imprime o
1 elemento "+ al.dados[0]);
System.out.println("Imprime o
2 elemento "+ al.dados[1]);
}
}
Informática - UFPA
7. Exemplo (2)
!
Implementação de uma
Lista com Encapsulamento:
public class ArrayLista{
private int dados[];
private int tamanho;
public ArrayLista(int n) {
dados = new int[n];
tamanho = 0;
}
public void add(int a) {
dados[tamanho] = a;
tamanho++;
}
25
Exemplo (3)
public int remove(int posicao) {
if ((posicao>0) &&
(posicao<tamanho))
return dados[posicao];
return -1;
}
public static void main(String args[])
{
ArrayLista al=new ArrayLista(5);
al.add(1);
al.add(2);
System.out.println("Imprime o 1
elemento ” +al.remove(0));
System.out.println("Imprime o 2
elemento ” +al.remove(1));
}
}
Informática - UFPA
Objetos
!
!
import java.util.Vector;
public class VectorLista{
private int dados[];
public VectorLista(int n) {
dados = new Vector(n);
}
public void add(int a) {
dados.addElement(new Integer(a));
}
public int remove(int posicao) {
if ((posicao>0) && (posicao<dados.size()))
return ((Integer)
dados.elementAt(posicao)).intValue();
return -1;
}
26
!
seu conjunto de propriedades (denominadas atributos),
com os valores das propriedades, mais as ligações que o
objeto pode ter com outros objetos;
"
27
public static void main(String args[])
{
VectorLista al = new VectorLista(5);
al.add(1);
al.add(2);
System.out.println("Imprime o 1
elemento "+ al.remove(0));
System.out.println("Imprime o 2
elemento "+ al.remove(1));
}
}
Informática - UFPA
Objetos
Formalmente, um objeto é algo que possui:
" um estado, que é normalmente implementado através de
"
Implementação de uma
Lista com Encapsulamento:
Um objeto possui um estado, exibe um
comportamento bem-definido e possui uma
identidade única.
uma identidade única. Identidade é a propriedade de
um objeto que distingue-o de outros objetos. Identidade
não é o nome do objeto, nem o endereço de memória onde
ele está armazenado, é um conceito de linguagens de
programação que não é visível para os “usuários”. e
um comportamento. O comportamento define como um
objeto reage às requisições de outros objetos, em termos de
mudanças de estados e passagem de mensagens.
Informática - UFPA
28
Informática - UFPA
8. Classe
!
Classes
É a descrição de um grupo de objetos com
propriedades similares (atributos), comportamento
comum(operações) , relacionamentos com outros
objetos e semânticas idênticas.
!
!
Todo objeto é instância de uma classe.
" Exemplo:
int a;
"
Pessoa p;
Uma classe define a estrutura e o comportamento de
qualquer objeto da classe, atuando como um padrão
para a construção de objetos.
Objetos podem ser agrupados em classes.
"
!
Pessoa
Enquanto um objeto individual é uma entidade
concreta que executa algum papel no sistema, uma
classe captura a estrutura e comportamento comum a
todos os objetos que estão relacionados.
29
Informática - UFPA
Classes
!
(Pessoa)
Émerson
Um atributo é uma característica de uma classe.
não apresentam comportamento, eles
definem a estrutura da classe;
!
Métodos
(Pessoa)
Clarissa
Informática - UFPA
Herança
A definição da classe consiste na definição dos
Atributos
(Pessoa)
Romário
30
!
atributos e operações dos objetos desta classe;
!
nome:string
idade:inteiro
calcularIdade()
Atributos
!
!
Operações caracterizam o comportamento de um
É um mecanismo existente no paradigma orientado a
objetos que permite a reutilização da estrutura e do
comportamento de uma classe ao se definir novas classes;
A herança também é conhecida como relacionamento “éum”;
A classe que herda o comportamento é chamada de
subclasse e a que definiu o comportamento superclasse.
Pessoa
CIC
objeto, e são o único meio de acessar, manipular e
modificar os atributos de um objeto.
Professor
31
Informática - UFPA
32
Aluno
Informática - UFPA
9. Herança (2)
!
Herança (3)
Herança de Atributos e de Métodos
!
Herança de Relacionamentos
Veículo
Carro
placa
registrar()
Todo carro
e todo
caminhão
possuem
uma placa
e uma
operação
registrar()
Caminhão
33
Carro
Informática - UFPA
Herança (4)
!
N
Veículo
placa
registrar()
1
Pessoa
pertence
Caminhão
Todo carro e
todo caminhão
pertencem a
uma Pessoa
34
Informática - UFPA
Herança (5)
Não há limites no número de níveis na hierarquia de
herança.
!
Pessoa
CIC
!
A utilização da herança facilita a reutilização de
código porque o código definido na superclasse pode
ser utilizado automaticamente na subclasse;
Através da herança é possível representar a relação de
generalização/especialização entre duas classes:
"
Professor
"
Aluno
a superclasse é uma generalização da(s) subclasse(s), e
a subclasse é uma especialização da(s) superclasse(s).
Pessoa
Professor
Universitário
35
Professor
Primário
Especialização
Informática - UFPA
36
Professor
Aluno
Generalização
Informática - UFPA
10. Tipos de Herança
!
!
Tipos de Herança (2)
Herança estrita: as subclasses podem redefinir ou
excluir propriedades herdadas da superclasse.
Herança não estrita: as mudanças acima não são
permitidas.
"
!
A subclasse pode :
" Adicionar novas operações:
- exemplo: na classe Professor a operação ministrarAula.
" Redefinir
Observação: se uma mudança de um tipo e/ou nome é
feita, pode caracterizar a subclasse de maneira diferente da
superclasse.
Pessoa
uma operação existente.
- exemplo: Um círculo é um tipo especial de elipse cujo
método para calcular área é !*r*2.
Elipse
" Remover
um comportamento.
(pouco freqüente)
" Uma combinação das três anteriores.
nome
identificação
endereço
calcularArea
Círculo
Livro
nome
identificação*
37
calcularArea
Aluno
Informática - UFPA
Tipos de Herança (3)
!
Observações:
!
Quando uma operação ou atributo é redefinida em uma
subclasse ele é chamado de sobrecarregado (overloaded).
"
Algumas linguagens de programação podem implementar
a exclusão de propriedades, no entanto, isto ocasiona um
problema. Não se sabe até onde a propriedade está sendo
transmitida em uma hierarquia de generalização.
"
Informática - UFPA
Tipos de Herança
"
39
38
Na realidade em todas as linguagens onde existe alguma
facilidade de cancelamento, a única forma de verificar se
alguma propriedade de uma classe ainda é aceita em uma
subclasse é conferir cada uma das subclasses [TAK90].
Informática - UFPA
!
40
A herança deve ser utilizada
visando a reutilização de
comportamento. Ou seja, as
classes derivadas devem se
comportar
como
as
superclasses. Para isso sempre
deve existir uma hierarquia de
Generalização /Especialização
entre as classes.
Um objeto do tipo círculo pode
ser usado no lugar de um
objeto do tipo elipse porque
todo círculo é um tipo especial
de elipse.
Elipse
calcularArea
Círculo
calcularArea
Círculos
Elipses
Informática - UFPA
11. Herança Múltipla
!
Herança Múltipla (2)
Herança múltipla é a possibilidade de se definir uma
subclasse com mais de uma superclasse.
CoisaQueVoa
!
Professor
Animal
Avião
Ave
Outro Exemplo de Herança Múltipla
Aluno
Mamífero
Professor Aluno
Ave herda de ambos,
CoisaQueVoa
e
Animal
41
Informática - UFPA
Herança Múltipla: Observações
!
!
Animal
cor
A1
Ave
!
A2
Qual cor da ave ?
!
B
43
Informática - UFPA
Em Java, uma interface especifica um conjunto de
operações que devem ser oferecidas por objetos que a
implementarem.
package poo;
public abstract interface InterfaceTest {
public static final int CONSTANTE1 = 1;
public static
int CONSTANTE2 = 2;
int CONSTANTE3 = 3;
public abstract void metodo1();
public
void metodo2();
}
atributo
cor
Informática - UFPA
Herança Múltipla: Observações (2)
Conceitualmente, a herança múltipla é necessária para
modelar o mundo real de maneira mais precisa;
Na prática, ela pode levar a problemas na implementação pois
nem todas as linguagens de programação orientadas a objetos
suportam herança múltipla;
A
CoisaQueVoa
42
44
Interfaces permitem a herança de tipos, não a herança
de comportamento. Desta forma, não permitem a
reutilização de código.
Informática - UFPA
12. Polimorfismo
!
!
Polimorfismo
É a habilidade de variáveis terem “mais de um tipo”.
Funções são ditas polimórficas quando seus
operandos podem ter mais de um tipo.
!
Coerção: a linguagem de programação tem um mapeamento
interno entre tipos.
"
Classificação de [Cardelli & Wegner, 1985]:
Polimorfismo
Universal
!
Overloading (sobrecarga): permite que um “nome de
função” seja usado mais de uma vez com diferentes tipos de
parâmetros. O compilador automaticamente chama a função
“correta” que deve ser utilizada.
Ad Hoc
"
Paramétrico
Inclusão
Overloading
45
Coerção
Informática - UFPA
Polimorfismo
!
Informática - UFPA
Polimorfismo
Em Orientação a Objetos :
!
calcSalario()
!
Professor
Universitário
Professor
Primário
calcSalario()
47
Exemplo: o operador + que pode ter 2 parâmetros inteiros, 2
parâmetros reais, 2 cadeias de caracteres (concatenação), etc. A
instrução read(x) em Pascal onde x pode ser inteiro, real ou string.
46
Professor
!
Exemplo: se o operador + é definido para somar dois números reais e
um inteiro é passado como parâmetro então o inteiro é “coargido” para
real.
calcSalario()
Assim, pode-se adicionar um comportamento específico
(implementação) às subclasses de uma hierarquia de
generalização / especialização.
Informática - UFPA
48
Polimorfismo
de
Inclusão:
tipo de polimorfismo
encontrado em linguagens orientadas a objetos. Todo objeto
de uma subclasse pode ser usado no contexto de um
superclasse.
Exemplo: todo objeto do tipo círculo pode ser usado no lugar
de um objeto do tipo elipse.
Elipse
/* Código polimórfico */
calcularArea()
void main( ) {
Elipse e;
Circulo c;
imprimir(e);
imprimir(c);
}
void imprimir(Elipse eli) {.... }
Círculo
calcularArea()
Informática - UFPA
13. Polimorfismo
!
!
Acoplamento (Binding)
Polimorfismo paramétrico ou parametrização: a partir
de uma única definição de uma função ela pode trabalhar
uniformemente. Também conhecido como genericity.
Exemplo C++:
"
"
/* Definição da Classe */
template class pilha <Tipo T> {
!
"
!
"
"
"
"
"
void empilhar( T );
T desempilhar( );
}
/* Utilização no código Cliente */
pilha<int> pilhaInt;
pilha<float> pilhaFloat;
49
" Dinâmico
– Normalmente associado à linguagens orientadas a objetos;
"
"
"
!
!
50
!
Elipse e;
Circulo c;
e := c;
e.calcularArea( );
!
A atribuição da linha 3 é dinamicamente acoplada, pois
acopla o objeto e à um tipo diferente de seu tipo
originalmente declarado.
Em princípio, seria uma violação atribuir um objetos de
um tipo diferentes tipo a váriável e, no entanto, como c
(Circulo) é subclasse de e (Elipse) essa atribuição é
válida.
!
Qual o método executado ? Círculo ou Elipse ?
51
Informática - UFPA
Acoplamento (3)
Exemplo (Java):
1
2
3
4
ou Atrasado: se ocorre durante o tempo de
execução ou muda durante a execução do programa.
Informática - UFPA
"
O acoplamento pode ser:
" Estático: se ocorre antes do tempo de execução e
– Exemplo: quando você declara em Pascal que uma variável é do
tipo integer;
Acoplamento (2)
!
Exemplo: acoplamento entre tipos e variáveis.
permanece inalterado durante a execução do programa.
– /* Estrutura de dados ... */
"
É
uma
associação
feita
pelo
compilador
(interpretador) entre um atributo e uma entidade.
Informática - UFPA
52
A operação executada é a de Circulo, porque o
compilador em tempo de execução verifica que a
variável aponta para um objeto desta classe;
Em algumas linguagens o programador deve pedir
explicitamente o acoplamento dinâmico para uma
mensagem em particular. Por exemplo, em C++ a
operação deve ser declarada virtual na superclasse e
redefinida na subclasse;
Importante: Todas as operações sobrecarregadas na
classe
derivada
devem
proporcionar
semanticamente os mesmos serviços oferecidos pela
superclasse.
Informática - UFPA
14. Classes Abstratas
!
!
!
Classes Abstratas (2)
Uma classe abstrata é uma classe que não tem
instâncias diretas. Uma classe concreta é uma classe
que pode ter instâncias. Em outras palavras se X é
uma classe abstrata o código a seguir não pode ser
executado: X objeto = new X();
Apesar disso, você pode criar construtores de uma
classe abstrata para que eles sejam chamados pelos
construtores das subclasses. (Reutilização)
Em Java utiliza-se a palavra abstract para indicar uma
classe abstrata:
"
!
Informática - UFPA
Classes Abstratas (3)
abstract class Figure { // inicio da class Figure
" public abstract double area();
" public abstract double perimetro();
" }// fim da class Figure
54
Informática - UFPA
Classes Abstratas (4)
Assim, você pode declarar métodos abstratos em
uma classe abstrata apenas para especificar um
protocolo comum de operações. Toda subclasse
concreta da classe abstrata deve fornecer uma
implementação para TODOS os métodos abstratos:
class Circle extends Figure {
" protected double raio;
" public Circle(double r) { raio = r;}
" public double
area() { return PI*raio*raio;}
" public double perimetro() { return 2*PI*raio;}
"}
!
Informática - UFPA
Se uma subclasse de uma classe abstrata não
implementa todos os métodos abstratos então ela
também é abstrata; e
!
"
55
O objetivo de criarmos classes abstratas é encapsular
outras classes com comportamento comum. Elas
podem surgir naturalmente na modelagem ou serem
criadas para promover o reuso.
Além disso, uma classe abstrata pode definir um
protocolo para uma operação sem definir a
implementação do método.
" public
public abstract class Figure { ....
53
!
!
Uma classe abstrata também pode ter métodos
concretos. Frequentemente, faz sentido mover o
máximo de funcionalidade possível para uma
superclasse, seja ela abstrata ou não.
56
Informática - UFPA
15. Delegação
Delegação (2)
!
É um outro mecanismo para reutilização de código;
Normalmente ele é utilizado em linguagens que não
utilizam o conceitos de classes (Actor e Self). Nestas
linguagens os objetos são chamados protótipos
(prototypes) e cada um deles implementa um
comportamento específico.
Objeto A
Pessoal
Compartilhada
attr1
métodos
57
!
Se o objeto A não implementa uma determinada
mensagem ele delega (repassa) a mensagem para o
objeto B. Se o objeto B implementa aquela mensagem
então ele a executa com os dados de A, senão ele a
delega para seus “delegatee´s” ....
!
!
Pode existir uma lista de objetos para os quais
mensagens são delegadas, o que causa conflito assim
como na herança múltipla. A solução é uma lista
seqüencial de objetos.
Objeto B
Pessoal
Compartilhada
attr1
métodos
Informática - UFPA
Delegação (3)
58
Informática - UFPA
Delegação (4)
!
A herança permite o compartilhamento de
comportamento baseado em classes, enquanto que a
delegação permite o compartilhamento baseado em
objetos;
!
Segundo [Grand, 1998], qualquer extensão de uma
classe que pode ser feita utilizando-se a herança,
também pode ser feita com a delegação. Entretanto, a
recíproca não é verdadeira;
!
A delegação é um modo mais geral que a herança de
estender a funcionalidade de uma classe, visto que
existem muitas ocasiões em que não é conveniente
usar a herança. Além disso, a delegação permite que
um objeto possa alterar suas respostas para pedidos
de serviços em tempo de execução.
!
Em linguagens baseadas em classes este mecanismo
também pode ser obtido. Isto é feito através do
repasse da mensagem para o outro objeto. Para isso é
necessário que o objeto delegador do serviço
contenha uma referência para o objeto responsável
pela execução.
59
Informática - UFPA
60
Informática - UFPA
16. MetaClasses
!
!
MetaClasses: Vantagens
São classes cujas instâncias também são classes.
" Uma classe contém informação sobre os objetos,
enquanto que uma metaclasse contém as
informações referentes à classe.
Dependendo da linguagem orientada a objetos :
!
1. Podem ser utilizadas para armazenar a informação
em relação ao grupo de objetos.
"
Existe suporte explícito a metaclasses. Ex: ObjVLisp.
" Existe suporte implicíto a metaclasses. Ex: Smalltalk.
" Não existe suporte a metaclasses. Ex: C++ e Java.
Exemplo: o número de objetos instanciados a partir da
classe, o valor médio de uma propriedade calculada a
partir dos valores específicos desta propriedade nas
instâncias, uma propriedade comum a todas as classes.
"
MetaClasse
É instância
MetaCírculo
Classe
61
pi = 3.1415
Objeto
Informática - UFPA
MetaClasses: Vantagens (2)
!
62
(e
Exemplo:
" Uma classe passa a ser tratada como um objeto que recebe
uma mensagem solicitando a criação de objetos. Assim, o
código abaixo:
Circulo c = new Circulo();
" corresponderia a enviarmos uma mensagem (new) a um
objeto Círculo. Logo, assim com a classe especifica as
operações da interface pública dos objetos, necessita-se de
uma metaclasse para especificar as operações da interface
pública das classes.
!
É instância
(Círculo)
raio= 23
cor = azul
Informática - UFPA
Informática - UFPA
É importante frisar que o conceito de metaclasses na
implementação tende a desaparecer. O nível da
"
63
É instância
raio
cor
MetaClasses
São utilizadas no processo de criação
inicialização) das novas instâncias de uma classe.
2.
Círculo
# de instâncias = 2
É instância
(Círculo)
raio= 10
cor = preta
metaclasse é, frequentemente irrelevante para o
programador típico [TAK90];
!
Entretanto, o conceito de metaclasse é utilizado em
algumas
metodologias
de
Análise
e
Projeto
Orientado a Objetos.
64
Informática - UFPA
17. MetaClasses em Java
!
Considerações Finais
Em Java o conceito de constructor e atributos e
métodos static, corresponde a união do conceito de
classes e metaclasses.
!
Orientação a Objetos:
"
Objetos;
– Classes;
"
"
Mecanismo de Reutilização de Código: Herança ou
Delegação;
"
!
Atributos Static: este modificador em atributos torna-os
atributos da classe.
Métodos Static: da mesma forma, métodos static pertencem
a uma classe e não operam sobre instâncias de uma classe.
"
Polimorfismo (de inclusão);
"
Acoplamento Dinâmico;
"
MetaClasses;
A sintaxe para acessar metodo static é:
"
NomeDaClasse . MetodoStatic(Parametros)
"
65
Informática - UFPA
Bibliografia
!
!
!
!
!
!
!
!
!
!
!
67
Linguagens de Programação, Metodologias, Notações, etc.
Por exemplo: double valor = Circulo.getPi();
Blair, G. et al. (Editors) Object-Oriented Languages, Systems and Applications, Pitman
Publishing, 1991.
Buzato, L. E., Rubira, C. M. F. Construção de Sistemas Orientados a Objetos Confiáveis,
Décima Primeira Escola de Computação, Rio de Janeiro, Julho de 1998.
Cardelli, L, and Wegner, P. On understanding types, data abstraction and
polymorphism. Computing Surveys, 17(4):471-522, December 1985.
Cornell, G., Horstmann, C. S. Core Java. Makron Books, São Paulo, 1998.
Cesta, A. A., Rubira, C. M. F. Tutorial: A Linguagem de Programaçäo Java, Campinas,
junho de 1997.
Flanagam, D. Java in a Nutshell, Second Edition, O’Reilly Associates, 1997.
Grand, M. Patterns in Java, John Wiley & Sons, 1998.
Meyer, B., Object-oriented software construction, Prentice-Hall, 1988.
Oliva, Alexandre. Programaçäo em Java. II Simpósio Brasileiro de Linguagens de
Programaçäo, Campinas, setembro de 1997.
Takahashi, T. Programação Orientada a Objetos, Escola de Computação, São Paulo,
1990.
Rubira, C. M. F. Tópicos Especiais em Engenharia de Software II, Universidade
Estadual de Campinas, notas de aula, 1996.
Informática - UFPA
!
66
Informática - UFPA