aboutsummaryrefslogtreecommitdiff
path: root/poo/n1.lyx
blob: 4ab7e7cadf17ab21edcc16e5d854152bc92b1014 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
#LyX 2.3 created this file. For more info see http://www.lyx.org/
\lyxformat 544
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass book
\use_default_options true
\maintain_unincluded_children false
\language spanish
\language_package default
\inputencoding auto
\fontencoding global
\font_roman "default" "default"
\font_sans "default" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype false
\use_dash_ligatures true
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_package amsmath 1
\use_package amssymb 1
\use_package cancel 1
\use_package esint 1
\use_package mathdots 1
\use_package mathtools 1
\use_package mhchem 1
\use_package stackrel 1
\use_package stmaryrd 1
\use_package undertilde 1
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 1
\use_minted 0
\index Index
\shortcut idx
\color #008000
\end_index
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\is_math_indent 0
\math_numbering_side default
\quotes_style french
\dynamic_quotes 0
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header

\begin_body

\begin_layout Standard
La evolución de los lenguajes de programación va ligada al crecimiento de
 la complejidad en aplicaciones y a la mejora de la capacidad del hardware,
 y busca acercarse a los conceptos del dominio de la aplicación (
\series bold
abstracción
\series default
).
 Un 
\series bold
paradigma de programación
\series default
 es una serie de conceptos que guían la forma de pensar acerca de los programas,
 construirlos y estructurarlos.
 Los lenguajes de programación reflejan uno o varios de estos paradigmas.
\end_layout

\begin_layout Standard
El paradigma 
\series bold
orientado a objetos
\series default
 organiza el software como una colección de objetos que se relacionan y
 proveen la funcionalidad de un sistema.
 Este paradigma nos permite:
\end_layout

\begin_layout Itemize

\series bold
Abstracción
\series default
: Centrarse en las propiedades de los tipos y no en la implementación.
\end_layout

\begin_layout Itemize

\series bold
Modularidad
\series default
: Descomponer el software en componentes que se combinan entre sí.
\end_layout

\begin_layout Itemize

\series bold
Encapsulación
\series default
: Juntar la estructura de un tipo de datos con sus operaciones.
\end_layout

\begin_layout Itemize

\series bold
Ocultación de información
\series default
: Diferenciar la parte pública de un módulo de la privada.
\end_layout

\begin_layout Itemize

\series bold
Herencia
\series default
: Definir clases a partir de otras.
\end_layout

\begin_layout Itemize

\series bold
Polimorfismo
\series default
: Permitir que una entidad haga referencia a objetos de distintos tipos.
\end_layout

\begin_layout Standard
En 1985 se crean el 
\series bold
C++
\series default
, extensión orientada a objetos de C muy popular que ayudó a difundir el
 paradigma, y 
\series bold
Eiffel
\series default
, creado por Bertrand Meyer tras un profundo estudio del paradigma pero
 considerado 
\begin_inset Quotes fld
\end_inset

teórico
\begin_inset Quotes frd
\end_inset

 y poco usado.
\end_layout

\begin_layout Standard
En 1995, Sun Microsystems (adquirido por Oracle en 2009) crea 
\series bold
Java
\series default
, un lenguaje OO puro popularizado por su uso en la web y con numerosas
 bibliotecas de código, y en el año 2000 Microsoft crea 
\series bold
C#
\series default
, que combina C++ y Java, junto con su plataforma 
\series bold
.NET
\series default
.
\end_layout

\begin_layout Standard
El compilador de Java genera un 
\series bold
código intermedio
\series default
 o 
\emph on
bytecode
\emph default
, independiente de la plataforma, e interpretado o compilado en el momento
 (compilación 
\series bold
JIT
\series default
, 
\emph on
Just In Time
\emph default
) por la máquina virtual de Java (JVM), con lo que el código se puede ejecutar
 en cualquier máquina que tenga instalado el entorno de ejecución de Java
 y la máquina virtual, independientemente de la arquitectura del procesador
 y el sistema operativo.
\end_layout

\begin_layout Standard
Java presenta una sintaxis sencilla, parecida a C++ pero eliminando las
 características complejas, y es robusto al ser fuertemente tipado (el compilado
r detecta muchos problemas del código), soportar excepciones (para gestión
 de errores en tiempo de ejecución) y proveer 
\begin_inset Quotes fld
\end_inset

recogida de basura
\begin_inset Quotes frd
\end_inset

 (hace innecesaria la gestión de punteros).
 Aprenderemos Java 1.8.
\end_layout

\end_body
\end_document