장음표시 사용
121쪽
Apronoa Computacao com Python Documentatiori, Versao q.
As variaveis dwidth e dheight indicam em quanto vanios alimentar o tamanlio do retangulo em cada direquo.
que duplica una quatquer objeto. Vria
122쪽
Apronoa Computacao com Python Documentatiori, Versao q.
Como exercicio, re-escreva o melodo 'moVeReci' para ele criar e retornar Um novo Rectangle ao in Ves de apenas modificar O antigo.
classe sciass) Um tipo composto XXX compound type) definido peto usuario. Uma classe tambem pode ser Visuali Zada como una molde que define a forma dos o elos que seruo suas instantias. instaticiar instantiste) Criar uina instantia de uina classe. instandia si istance) Um objem que pertence a Umn ClnSSO.ometo object) Um tipo de clado composio comuniente utili Zado para representar unia coisa um concello do mundo
124쪽
Como exemplo de outro tipo delinido peto usuario, vanios definir uina classe chamada HOTario que graVa os registros de horario do dia. Eis a defui uo da classe
O diagrama de estudo para o objeto Horario parece com isso
125쪽
Apronoa Computacao com Python Documentatiori, Versao q.
Como exercicio, escreVa Uma tuncao 'imprimi rHorario' que tentia como argumento iam objeto Horario eimprima-o na forma horas minutos segundos. Como uni segundo exercscio. escreva uma funςao booleana que tentia como argumento clois objetos Ho- rario. hi e h2. e retorne vercladeiro si) se hi veni depois de h2 cronologicamente. do contrario. retorne
A saida deste programa e l2 49 30. o que e correto. Por Outro laclo. existem casos onde O resultado nao e correto. Voce pode pensar erit algum P
126쪽
Apronoa Computacao com Python Documentatiori, Versao q.
Mesar desta funςao estu correta, ela esta comecando a ficar grande. Depois Vamos fugeri r uina aproxima ao alternativa que rende um codigo melior. Clique aqui para laedback
Existem momentos quando e utit para tima funcao modificar um ou mais dos objetos que ela recebe como parametro . Usualmente. quem esta chamando a funς mantem uma referendia para os o elos que ele passa, de forma quequaisquer inudanςas que a funςao faZ sao Visi Veis para quem esta chamando. Func es que traballiam desta forma suo chamadas modificadores. in GTQmOndar, que adiciona um numero clado de segundos para um objeto Horario. que poderia ser escrito quase natural mente como um modificador. Um rascuntio tosco da funςao seria algo parecido com isso
A primetra linita executa a opera pno basica. O resto lida com os caso especiais que Vimos antes Esta fu ncao esta coneta P Ο que aconieceria se O parametro segundos for multo maior que sessenta P Nesse caso. nao e suficiente transportar apenas uma VeZ. teriamos de continuar faZendo isso ate que segundos seja menor que sessenta Uma soluςao seria substituir os comando is por comandos while
127쪽
Apronoa Computacao com Python Documentatiori, Versao q.
Quatquer coisa que pode ser fetia com modificadores tambem podem fer Ditas com funςOes puras. De fato. algumas linguagens de programaquo permitem apenas funςOes puras. Existe alguma eVidentia que programas que usam funςOes puras suo dese OlVidos mais rapidamente e suo menos propensos a erros que programas que usam modificadores. Noentanto, modificadores aS VeZes suo convenientes. e em alguns casos, programaςao functonat e menos eliciente. Em gerat, recomendamos que Voce escreVa funςoes puras sei re que for necessario e recorrer para modificadores so- mente se existir uina grande Vantagem. Esta aproximaςao poderia ser chamada de uni estilo de programaςao functonat.
45.5 43.5 Desenvolvimento Prototi paco versus Desenvolvimento Planetamento
Neste capitulo; demonstramos unia aproximaςao para o dese OlVimento de programas que chamamos de dese OlVimento prototi pado Em cada caSO. escreVemos uni rascuntio tosco ou prototi po) que executou os calculos basicos eentuo. o testamos em uns pOucos casos, corrigindo enlao, as fallias que fomos encontrando. En ora esta aproximaquo possa ser elicaZ ela pode conduZir para codigo que e desnecessariamente complicado desdeque trata de multos casos especiais e unreliable desde que e disicit faber se Voce encontrou todos os erros. An alternative is planned devel opinent. in which high-levet insight into the problem can mata the programining mucheaster. In this case, the insight is that a Time object is reatly a three-digit number in base 60l The second component isthe Vones column V me minute component is the 'si xties column V and the liourcomponent is the 'thirty-six hundreds
When we wrote addTime and increment. we were effectively doing addition in base 60. whicli is why we had to carryDom One column to the nexi. This observation suggesis another approach to the whole problem we can convert a Time object into a single numberand lata advantage of the faci that ille computer knows how to do arithmetic with numbers. The following functionconveris a Timeo ect into an integer
20 Capitulo 45. Capitulo et 3: Classes E funςoes
128쪽
Aprono a Computa octo com Python Documentatiori, Versao q.
Algumas veges. converter de base 60 para base l0 e voltu e mais dificii do que simplesinente lidar com horarios Conversao de base e mais abstrata: nos sa intu ao para lidar com horarios e mel hor. Mas se XXXX But is we have the insight to treat times as base 60 numbers and make the investinent of writing the
conversion functions converterParaSeguntos e cri ars orario); nos conseguimos Um programa que e men . facit de tere depurar. e mais conii aVel.
E lambem facit para adicionar funcionali clades depois. Por exemplo, imagine subtrair clois Horarios para encontrara duraςao entre etes. Uma aproximaquo ingenua seria implementar subtraςao com eri restimo borrowing - Isso mesino P ). Usando as funς oes de conmersao sera mais facit e proVGelmente estura correto. Ironicamente, algumas VeZes faZer um problema mais disicit sola mais generi co) o torna mais simples sporque existemni glans poucos casos especiais e poucas Oportuni clades para errar). Clique aqui para laedback
Quando Voce escreve unia soluςao generica para uma classe de problemas, no contrario de uma soluςao e specifica paraum unico problema, Voce escreVeu um algo simo. Nos menci Onamos i S So antes mas nao definimos cuidados amente. Isso nao e facit para definir enino nos vanios tentar ba Couple os approachesb. Primetramente; considere alguma coisa que nao seja um algorsimo. Quando Voce aprendeu a multiplicar numeros deum digito. Voce proVaVel mente memori Zou a tabela de multiplicaςao. Como resultado. voce memori Zoia l00 soli1ςoesespecificas. Esse tipo de conliecimento nao e algorsimo Mas se Voce e 'pregulςoso Voce prOVaVel mente trapaceou por ter aprendido alguns truque s. Por exemplo. para encontrar o procluto de n e 9. Voce pocle escreVer n-l como o primetro digito e l0-n como o segundo digito. Este truque e um Soluςao generica para multiplicar quatquer numero de uni digito por 9. Isso e uni algoriimolDe modo parecido as tecnicas que Voce aprendeu para adicionar istoria transporteli. Vsubtraction with bonowingit. e divisao longa suo todas algo inmos. Vina das caracteristicas dos algo inmos e que eles nao requerem nenhumainteligencia para serem executados carry out). Eles sao processos mecanicos no quat cada passo segue o ultimo deacordo com um conjunto simples de regras. Na nos sa Opinino, e preocupante que humanos gastem tanto tempo na es cola aprendendo a executar algoriimos que literatinente, nao requerem inteligencia.
129쪽
Apronoa Computacao com Python Documentatiori, Versao q.
Capitulo 45. Capitulo et 3: Classes E luncoes
130쪽
Python e urna lingvagem cle progruinaquo orientacla a Ovietos, o que significa que ela tem caracte isticas que Suportam a Drogrumacuo orientuclu a ovietos. Nao e facit definir programaςao orientada a objetos, mas temos Visto at ready algumas de suas caracte isticas Programas sao construidos sobre definiςoes de objetos e definiςoes de funςoes. e a maioria das computaςoes e expressa em termos de OperaςOes sobre objetos Cada definiquo de objeto corresponde a algum objeto Ou concello do mundo real. e as funςoes que operum Comaqueles objetos correspondem a manetra como os o elos do mundo real interagem Por exemplo. a classe TQmpo, definida no capitulo l3 corresponde a manetra como as pessoas registram as horas dodia, e as funςoes que definimos correspondem nos tipos de coisas que as pessoas faZem com times. Do mesmo modo as classes Ponto e RQ Tangia o correspondem nos concellos matematicos de uni ponto e de um relangulo. Ate aqui . nao tiramos Vantagem das caracte isticas fornecidas por Python que suportam a programaquo Orientada ac Veios. Estritamente falando estas caracte isticas nao suo necessarias. Na maior parte das VeZes, elas fornecem tima sintaxe alternativa para as coisas que ja fi Zemos, mas em multos casos, a alternati Va e mais concisa e conmem mais acvradamente a estrutura clo progrumn. Por exemplo, no programa TimΘ, nao existe uina conexao obVia entre a definiquo da classe e a definiquo da funςaoque segue. Com alguma in Vestigaςao. fica aparente que loda funςao toma pelo menos Um objeto Timo como um