sábado, 26 de dezembro de 2015

Concurso - Orientação a Objetos

Uma das coisas boas em se almejar um cargo público é a necessidade de estudar matérias que normalmente se conhece apenas a parte prática, na qual vários profissionais deixam de lado vários conceitos importantes. Permita-me citar o caso de Português, essa é uma matéria que aprendemos de forma decorativa nos 1º e 2º graus apenas para conseguirmos passar de ano, porém na vida profissional cometemos diversos "barbarismos" ao escrevermos, por exemplo, um e-mail ou uma solicitação.
Como este blog trata sobre Empregabilidade resolvi tratar algumas questões de concursos para explicar alguns conceitos importantes, como não sou professor de Português o assunto tratado será relacionado a Informática. Vamos a nossa questão:
Análise e Projeto OO - Prova TRT - 23 - FCC 2011
Sobre os conceitos da orientação a objetos, considere:

I. Classe encapsula dados para descrever o conteúdo de alguma entidade do mundo real.
II. Objetos são instâncias de uma classe que herdam os atributos e as operações de uma classe.
III. Superclasse é uma especialização de um conjunto de classes relacionadas a elas.
IV. Operações, métodos ou serviços fornecem representações dos comportamentos de uma classe.

Está correto e correto o que consta em:

a) I, II, III e IV.
b) I, II e IV, apenas.
c) II, III e IV, apenas.
d) I e II, apenas.
e) II e IV, apenas.
Para podermos resolver essa questão, devemos conhecer os conceitos (e não a prática) da orientação a objetos. O que é Orientação a Objetos? É um enfoque que define um sistema como uma coleção de objetos que interagem entre si, que possuem características próprias.

O que são classes? são modelos ou templates para os objetos. Possuem as seguintes propriedades:
  • Atributos que armazenam informações sobre o estado do objeto.
  • Operações (ou métodos, ou serviços) que são oferecidas para implementar o comportamento do objeto.
O que são objetos? E a implementação física e real (ou uma instância) de uma classe. Possuem os seguintes componentes:
  • Identidade que é a propriedade que o distingue de outros objetos (OID).
  • Estado que reflete os valores correntes dos atributos.
  • Comportamento que é o modo como o objeto reage em termos da mudança de seu estado.
O termo herança é muito abrangente e normalmente o conhecemos em relação a duas classes, mas também pode ser aplicado ao afirmar que um objeto é uma herança de uma classe. Ou seja, neste caso está aplicado em relação receber as características de atributos e operações. O princípio básico da herança, ou generalização, trata da criação de novas classes mais especializadas a partir de classes já existentes (chamadas de superclasses), essas novas classes são especializações para sua melhor adaptabilidade.

O termo encapsulamento refere-se a esconder detalhes da implementação que não deve ser acessado externamente, esse termo tanto pode se referir a atributos como a operações.

Com esses conceitos em mente podemos responder a questão. A primeira está errada pois o encapsulamento não serve para descrever algo, serve para esconder algo. A segunda está correta apesar de muitas pessoas acharem que o termo herdar não se aplicaria entre objetos e classes. A terceira foi trocado o termo especialização por generalização, ou seja, a Superclasse é uma generalização de um conjunto de classes, ou invertendo, um conjunto de classes é uma especialização de uma superclasse. E a quarta está correta pelo que já vimos sobre operações. Sendo assim a resposta correta é a letra e.

Como vimos estudar para concursos não é de todo ruim, pois nos permite conhecer melhor a teoria de diversas matérias para melhorarmos o nosso conhecimento sobre a parte prática. Observe que aqui não usei qualquer linguagem de programação, pois lembre-se sempre que OO não é linguagem, mas conceitos. Ou seja, não é porque está usando Java que está programando em OO.

Obrigado e até a próxima
Fernando Anselmo

sexta-feira, 25 de dezembro de 2015

Empregabilidade - Fim de Ano, tempo de se compreender

Estamos perto do final de 2015 e mais uma vez acontece aquela rotina de planos para o próximo ano. Adoro as coisas que prometemos fazer do tipo, vou estudar mais, vou ler mais, vou criar a paz mundial e por aí vai em uma série de promessas que mal serão cumpridas. O questionamento que propõe em fazer é quanto realmente você se conhece? Pois somente deste modo é que planos poderiam se realizados.

A seguinte frase é atribuída a Sun Tzu "Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças", não sei se é verdade pois já li a Arte da Guerra várias vezes e essa frase não aparece em sua obra, porém isso não importa já que a frase diz muito sobre o que é nos reconhecermos. Com base na análise de SWOT preparei o seguinte mapa:


A ideia é muito simples imprima a figura e responda em cada um dos quadrantes a pergunta estipulada, reconheça suas Forças, Fraquezas, Oportunidades e Ameaças. Normalmente as promessas de Ano Novo estão concentradas na coluna "O que me atrapalha?", pode reparar, pois se uma pessoa promete deixar de fumar é porque ela vê isso como uma Ameaça, ou se promete Ler pelo menos um livro por mês é porque sabe que sua Fraqueza consiste em não ter muito conhecimento sobre as coisas. O problema dessas promessas é que deixam de lado a coluna "O que me auxilia?" e neste caso muitas Oportunidades são perdidas ou o que era uma Força pode ser deixada o ano todo no esquecimento.

Recomendo que suas promessas de Ano Novo sejam vistas de forma diferente, sob uma nova perspectiva:
  1. Plano de manutenção para suas forças.
  2. Plano defensivo para suas fraquezas.
  3. Plano ofensivo para suas oportunidades.
  4. Plano de saída para suas ameaças.
Liste pelo menos 3 itens em cada coluna e já terá 12 planos de ação para realizar em 2016. Reconheça em cada quadrante aquilo que realmente é e que só você pode ser franco o suficiente para confessar, seja honesto consigo e neste próximo ano que se inicia faça algo realmente útil para se ajudar.

Obrigado e até a próxima
Fernando Anselmo

segunda-feira, 14 de dezembro de 2015

Empregabilidade - Conceitos Rápidos de SCRUM

Quando o assunto é Scrum muita gente ou fica perdida em uma entrevista, ou fala o que não deve. Pensando nisso resolvi pegar um livro de Scrum Master e criar um compilado (um resumo) para que qualquer um possa rapidamente e facilmente entender o que acontece.

A metodologia Scrum é melhor aplicada para um ambiente caótico. Isso mesmo, pode parecer algo contraditório, mas não devemos confundir caótico com anárquico. Possui três pilares que são:
  • Transparência - todos possuem conhecimento dos processos, requisitos de entrega e status.
  • Inspeção - o tempo todo é inspecionado o que está sendo feito no projeto, seja nas reuniões diárias ou no sprint review.
  • Adaptação - produto sofre adaptação quanto ao produto e mudanças.
Existem os seguintes papéis básicos (se faltar um deles NÃO É SCRUM):
  • Product Owner - ponto central com poderes de liderança do produto. É o único a decidir quais recursos e funcionalidades serão construídos e qual a ordem eles devem ser feitos. Manter e comunicar a todos os outros participantes uma visão clara do que se está buscando alcançar no projeto. É quem prioriza os itens do Product Backlog.
  • Scrum Master - função de auxiliar aos outros a entender os princípios e práticas do Scrum. Papel de coach e ajuda a equipe entender o processo e desenvolver sua própria abordagem do Scrum. É um facilitador, não é chefe de ninguém.
  • Dev Team - são as pessoas que de fato construirão o projeto e decidirão como farão as coisas. A ideia principal é que a equipe se auto-organize para determinar a melhor maneira de atingir a meta estabelecida pelo Product Owner.
Como funciona?

O Product Owner é responsável por conceber uma visão do produto, ou seja, o que é desejado e onde o produto deve chegar. Em seguida, desmembra sua visão em uma lista de funcionalidades, essa lista é chamada de Product Backlog. O Scrum Master deve auxiliar sua realização. Um vez pronta, esta lista é ordenada por prioridades (Grooming) da que agrega mais valor para o negócio para a que menos agrega. O projeto é então dividido no que é conhecido por sprint. Uma sprint é um período de tempo com duração fixa (time-boxed), normalmente de 2 a 4 semanas, no qual algumas funcionalidades da lista serão construídas e entregues.


Antes de cada Sprint começar é realizada uma reunião de planejamento (Sprint Planning) onde é criado o Backlog Sprint. Com base na capacidade da equipe é definida quantas funcionalidades da Product Backlog serão completamente construídas.

Mudanças também podem ser inseridas, porém estas devem ser planejadas e priorizadas para serem inseridas em uma próxima sprint.

Todo dia é realizado uma reunião de 15 minutos (Daily Scrum) com 3 perguntas básicas a cada elemento do time: O que eu fiz ontem? O que eu vou fazer hoje? Tem algum impedimento? Essa reunião é realizada com todos de PÉ, exatamente para que ninguém se alongue demasiadamente.

O que fazer ao final da Sprint?

São realizadas 2 atividades:

1ª) Scrum Team Review. Com o objetivo de validar e adaptar o produto que está sendo construído, se o que está sendo feito está de acordo com o esperado é a apresentação daquilo que foi feito no sprint para aprovação do Product Owner.

2ª) Retrospectiva. Verificar as necessidades de adaptação no processo, comparar o que foi feito de positivo e o que foi negativo, que deve ser melhorado ou parar de fazer.

Falei que era uma visão rápida sobre o Scrum, se quiser conhecer mais detalhes, existem excelentes vídeos no YouTube que ensinam muito mais sobre essa metodologia. Como por exemplo este:


Obrigado e até a próxima
Fernando Anselmo

sábado, 12 de dezembro de 2015

Empregabilidade - IoT ?!?

Vamos imaginar a seguinte situação, está em uma entrevista de emprego e o entrevistador pede para lhe definir IoT, o que diria? Isso é bem parecido quando lhe pedem para falar sobre "polimorfismo" que em Orientação a Objetos são métodos com mesmo nome e que podem ocorrer na mesma classe (denominado por Overloading) ou por herança (denominado por Override).

Vejo pessoas publicarem vários livros e artigos sobre IoT, mas nenhuma delas está algo claro como: IoT, ou Internet of Things, ou ainda "Internet das Coisas" é simplesmente a ligação do mais variado tipo de hardware a Internet. Pronto, simples assim. Por exemplo, sabemos que agora existe o Apple Watch e o Android Watch. Em sua essência são relógios de pulso, na verdade são bem mais que isso. Comprei um Moto 360 (como o da foto abaixo) e agora meu relógio pode medir meus batimentos cardíacos, me acompanhar nos exercícios, sugerir que faça mais caminhadas, traçar as rotas por onde andei, ativar alarmes se passo do meu índice de batimento normal e ainda ligar automaticamente para meu médico caso tenha uma taquicardia ou algo pior (isso tudo sem ter que tocar no telefone). E isso é apenas uma de suas mais variadas funcionalidades.


Lembro que a nossa Presidenta falou em um discurso na ONU que não era possível "Estocar Vento". Bem, piadas a parte, o que realmente ela quis dizer é que o vento sopra em várias direções e isso causa uma intermitência, ou seja, nem sempre o vento sopra quando a eletricidade é necessária, o que torna difícil a integração da sua produção no programa de exploração. Novos aerogeradores estão sendo construídos ligadas a Internet e eles giram em seu eixo, de acordo com os dados enviados, buscando uma melhor performance na velocidade das hélices (ou seja, mais energia produzida).

Muitos outros aparelhos estão sendo ligados a Internet, imagine um ar-condicionado em sua casa no qual, de acordo com dados de tempo enviados, pode regular-se automaticamente para obter ar frio de fora economizando energia, ou um carro ligado completamente a Internet, não estou tratando apenas do GPS, mas de muitos outros dados que podem lhe ser enviado para obter uma melhor performance.


Sabemos que o custo de placas inteligentes, como Arduino ou RaspBerry tem diminuído constantemente. Atualmente, é possível comprar um RaspBerry, com as mesmas funções de um computador, por 5 dólares. Junte isso a qualquer hardware e temos a possibilidade de ligação com a Internet, o que é possível este conjunto realizar? Isso é IoT.

Obrigado e até a próxima
Fernando Anselmo