Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


teoria 1.5, Apuntes de Algoritmos y Programación

Asignatura: Elements de programacio, Profesor: , Carrera: Enginyeria Informàtica, Universidad: UB

Tipo: Apuntes

Antes del 2010

Subido el 29/11/2007

gina-748
gina-748 🇪🇸

4.6

(7)

10 documentos

1 / 28

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
ELEMENTSDEPROGRAMACIÓ
Ti15
T
eor
i
a
1
.
5
PROGRAMACIÓORIENTADAAOBJECTES(II):
CLASSES.
JORDIVITRIÀ
1
ElementsdeProgramació1.5
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c

Vista previa parcial del texto

¡Descarga teoria 1.5 y más Apuntes en PDF de Algoritmos y Programación solo en Docsity!

ELEMENTS^ DE

PROGRAMACIÓ T i^ 1 5Teoria^1.

P R O G R A M A C I Ó^ O R I E N TA D A

A^ O B J E C T E S^ ( I I ) : C L A S S E S .J O R D I V I T R I À 1

Classes RECORDATORI^ : Un^ objecte^ és^ un^ tipus^ actiu

de^ dades^ que^ consisteix^ de: j p q

1.^ Una^ col∙lecció^ d’informació

relacionada.

2.^ Un^ conjunt^ d’operadors

per^ manipular^ aquesta^ informació. La^ informació^ s’emmagatzema

en^ variables^ instanciades.^

Les^ operacions^ s’anomenen mètodes^ i^ les^ variables^ instanciades

i^ els^ mètodes^ són^ els^ atributs

dels^ objectes. Tots^ els^ objectes^ són^ instàncies

d’alguna^ classe.^ La^ classe^ de

l’objecte^ determina^ quins atributs^ tindrà^ l’objecte.P d^ bj^

i d’^ l^ i Podem^ crear^ nous^ objectes

a^ partir^ d’una^ classe^ quan^ i

nvoquem^ un^ constructor. 2

Classes Per^ veure^ com^ definir

noves^ classes,^ anem

a^ construir^ un programa^ que^ faci

la^ simulació^ d’un^

canó^ (en^ funció^ de l’angle^ i^ de^ la^ velocitat

inicial^ del^ projectil).^4

Classes Necessitem^ saber^ que: 1) La gravetat genera a prop de la superfície terrestre una1) La^ gravetat^ genera

,^ a^ prop^ de^ la^ superfície

terrestre,^ una acceleració^ de^ 9,8m/s

2 (això^ significa^ que^ si

llancem^ un^ projectil cap^ amunt^ a^ una^ velocitat

s de 20m/,^ al^ cap^ d’un segon^ la^ seva p^

p^ g velocitat^ serà^ de^ 10,2m/s,

al^ cap^ de^ 2s^ serà^ de^

0,4m/s^ i^ poc després^ començarà^ a

baixar).

  1. El^ j^ il^

à^ d^ l^ fí i

(^ l

  1. El^ projectil^ es^ mourà

a^ prop^ de^ la^ superfície

(no^ el^ posarem^ en òrbita).Enlloc^ de^ fer^ servir^ les^ fórmules

del^ càlcul^ que^ ens^ donen

la posició^ del^ projectil^ en

cada^ instant^ de^ temps,

anem^ a^ fer^ un programa que ho faci per simulació

5 programa^ que^ ho^ faci

per^ simulació.

Classes Ara^ hem^ de^ calcular^ les^ components

x^ i^ y^ de^ la^ velocitat^ inicial.^ Python^ treballa

en^ radiansy El^ següent^ punt^ és^ anar^ calculant

la^ posició^ i^ la^ velocitat^ fins^

que^ no^ toca^ terra... 7

Classes Això^ és^ força^ simple^ amb^ aquesta

iteració: Com^ que^ el^ vent^ no^ ens^ afecta,

la^ component^ horitzontal^ de

la^ velocitat^ serà^ constant. La^ distància^ recorreguda^ per

cada^ interval^ de^ temps^ serà

simplement^ time*xvel, i

per^ tant^ la^ seva^ posició^ actual: Per^ la^ component^ vertical^ és

un^ pèl^ més^ complicat.^ La^ velocitat

al^ final^ de^ l’interval^ serà: 8

  • Classes

Classes

Fins^ ara^ no^ hem^ fet^ cap^ tipus

de^ modularització.^ Anem

a^ introduir‐la.

A^ t^ ió é^ é^

i^ i h^ li^ i^ t^ i bl^

d l^ (^ d Aquesta^ versió^ és^ més^ concisa,

i^ hem^ eliminat^ variables^ del

programa^ (que^ queden ocultes^ a^ la^ funció).Però no és la única manera de fer hoPerò^ no^ és^ la^ única^ manera de^ fer‐ho...^11

Com^ definir^ una

nova^ classe Suposem^ que^ volem^ definir

un^ dau^ de^ n^ cares,^ la classe^ MSDie. Un^ objecte^ d’aquest^ tipus^ ha

de^ saber^ dues^ coses: quantes^ cares^ té^ i^ quin^ valor

ha^ pres^ en^ un determinat^ moment. Quan^ el^ creem^ especificarem

quantes^ cares^ té. l^ d^ i dEls^ operadors^ que^ tindrem^ seran

tres:^ roll,^ que ens^ retornarà^ un^ valor^ aleatori

entre^1 i^ n, setValue,^ per^ imposar^ un

determinat^ valor,^ i tV l b l l getValue^ per^ saber^ el^ seu

valor.^13

Com^ definir^ una

nova^ classe Amb^ això^ el^ que^ podem^ fer

és^ crear^ un^ dau^ invocant^ el

constructor^ MSDie, donant^ el^ nombre^ de^ cares com^ a^ paràmetre. L’objecte^ dau^ s’encarregarà

de^ mantenir^ aquest^ nombre

internament^ fent^ servir una^ variable^ instanciada.^ També

farà^ servir^ una^ altra^ variable

instanciada^ per mantenir^ el^ valor^ actual^ del

dau.^ Inicialment^ serà^ 1. El^ valor^ del^ dau^ pot^ canviar

quan^ cridem^ els^ mètodes^ roll

i^ setValue,^ i^ el podem^ obtenir^ amb^ el^ getValue

Anem^ ara^ a^ veure^ com^ escriure

tot^ això:^14

Nombres^ aleatoris

(Random)(^ ) Com^ podem^ generar^ coses^

aleatòries^ amb un^ ordinador^ que^ no^ ^ cap

component aleatòria? Python^ ens^ proporciona^ dues

funcions^ que ens^ poden^ ajudar:^ randrange

i^ random. randrange^ ens^ retorna^ un

nombre^ sencer pseudoaleatori dins^ d’un^ rang

determinat. Es^ pot^ cridar^ amb^ fins^ a^3 paràmetres.Per^ exemple,^ randrange(1,6)

retorna^ un b d l [1 2 3 4 5] i nombre^ del^ rang^ [1,2,3,4,5],

i randrange(5,105,5)^ ret^ orna

un^ múltiple^ de^5 entre^5 i^ 100,^ inclusiu.

16

Nombres^ aleatoris

(Random)(^ ) random^ (no^ necessita^ paràmetres)

genera^ un^ real^ entre^ zero^ i ú. 17

Com^ definir^ una

nova^ classe

2.^ Els^ paràmetres^ formals^

del^ mètode^ prenen^ els^ valors

dels^ paràmetres^ de^ la crida.^ En^ el^ cas^ d’una^ crida^

a^ un^ mètode,^ el^ primer^ paràmetre

formal correspon a l’objecte (a partir d’ara ja no el comentarem més, però calcorrespon^ a^ l objecte^ (a^ partir

d ara^ ja^ no^ el^ comentarem^

més,^ però^ cal recordar^ que^ existeix!).^ En^ el

nostre^ exemple:

3.^ El^ cos^ del^ mètode^ s’executa.4.^ El^ control^ retorna^ al^ punt

posterior^ al^ de^ la^ crida^ del^

mètode. 19

Com^ definir^ una

nova^ classe Hi h^ t^ èt d^ d’^

l^ t^ i^ ifi^

t^ i l^ l P th Hi^ ha^ certs^ mètodes^ d’una^ classe

que^ tenen^ un^ significat^ especial

pel^ Python. Aquests^ mètodes^ tenen^ noms

que^ comencen^ i^ acaben^ amb

_

Per exemple^ init^ és el constructor de l’objecte Python crida aquest mètodePer^ exemple,^ init^ és^ el^

constructor^ de^ l objecte.^ Python

crida^ aquest^ mètode per^ inicialitzar^ un^ MSDie^ nou.

El^ seu^ rol^ és^ donar^ valors^ inicials

a^ les^ variables^ de l’objecte.Des^ de^ fora^ de^ la^ classe,^ el^ constructor

es^ crida^ fent^ servir^ el^ nom^

de^ la^ classe: Quan^ s’executa^ aquesta^ instrucció,

Python^ crea^ un^ nou^ MSDie

,^ i^ executa^ init per^ aquell^ objecte.^ El^ resultat

és^ que^ die1.sides^ pren

el^ valor^6 i die1.value^ pren^ el^ valor

6.^ El^ l^ d’^ t^ i bl^

d^ lt^ d^ d’ lt^ èt d^ fi p La gran avantatge^ d’aquestes^ variables^ es^ que

ens^ permeten^ guardar^ valors

de Els^ valors^ d’aquestes^ variables^ es^ poden^ consultar

des^ d’altres^ mètodes^ o^ fins i^ tot^ en^ successives^ crides^ del^ mateix^ mètode

(això^ no^ passa^ amb^ les^ variables locals^ de^ les^ funcions,^ que^ desapareixen^ que la^ funció^ s’acaba). 20 l’estat^ d’un^ objecte^ sense^ preocupar

‐se^ de^ gestionar‐ho^ dins^ del

programa.