Вы находитесь на странице: 1из 21

4

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

I.-

NOMBRE DE LA PRCTICA:

1.2 CREAR Y EJECUTAR UNA APLICACION ESCUELA-ALUMNO

No. DE PRCTICA:

No. DE SESIONES:

No. DE INTEGRANTES MXIMO POR EQUIPO:

INTRODUCCIN:

Una de las actividades ms comunes en la programacin orientada a objetos es la denominada encapsulamiento de la o las clases, dicha actividad busca en forma general mostrar los elementos con las cuales es posible interactuar. Encapsular permite que una clase tenga muchos atributos y operaciones que solo la propia clase conoce y nadie ms puede utilizar.

OBJETIVO GENERAL:

Conocer el procedimiento para la creacin de una aplicacin en Netbeans, creacin de la clase principal y clases secundarias, creacin de un constructor, reconocer el encapsulamiento de clases como un elemento de orden importante para los sistemas orientados a objetos.

OBJETIVOS ESPECIFICOS:

conocer el entorno de Netbeans. Entender el significado de cada uno de los elementos del encapsulamiento y abstraccin de un objeto. Crear un sistema O. O que utilicen el encapsulamiento de una clase.
1

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

Definir mtodos y atributos de un objeto. Crear un constructor en la clase. Implementar adecuadamente el encapsulamiento de la clase.

CUESTIONARIO:

1.- QU ES IDE? = es el entorno de programacin compuesto por un conjunto de herramientas de programacin. 2.- CULES SON LOS SUS COMPONENTES?= editor de texto, compilador, interprete y depurador. 3.- CUL ES LA FUNCIN DE LOS COMPONENTES DEL IDE?= estos permiten crear interfaces. 4.- QU FUNCIN TIENE UN CONSTRUCTOR?= sirve para darle valores a los atributos con parmetros. 5.-MENCIONA 3 CARACTERISTICAS DE NETBEANS: Todo el programa debe estar dentro de una clase y todo proyecto dentro de paquetes. Auto completa el cdigo. Sugiere los parmetros.

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

II.-

REPORTE DE PRCTICA.

Nuestro programa comienza queriendo abstraer y encapsular atributos de un objeto llamado alumnos. Del cual solo abstraemos los datos ms importantes que esta puedes contener. Para esta clase solo se encontraron 11 atributos del cual se anotan dentro de la clase principal que tiene por nombre Alumno. Para el cual le asignaremos atributos de diferentes tipos de datos como lo son de tipo: String, bool, int, float, doubl. Ya que nos permitir dar caractersticas que diferencian un objeto de otro.
public class Alumno { //atributos private String Nombre; private String ApellidoPaterno; private String ApellidoMaterno; private String Sexo; private int Edad; private double Estatura; private String Licenciatura; private String Domicilio; private String NumCuenta; private String CorreoElect; private String Telefono; }

Despus de haber declarado todos los que tributos que usaremos en nuestra clase, crearemos constructor donde le podremos asignar parmetros a nuestros atributos ms importantes. Ya que los parmetros pueden pasar su valor a un procedimiento desde el principal o desde otro procedimiento. Existen ocasiones en que es necesario mandar al procedimiento ciertos valores para que los use en algn proceso. Estos valores que se pasan del cuerpo principal del programa al procedimiento se llaman parmetros.
public class Alumno { //atributos private String Nombre; private String ApellidoPaterno; private String ApellidoMaterno; private String Sexo; private int Edad; private double Estatura; private String Licenciatura;
3

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

private String Domicilio; private String NumCuenta; private String CorreoElect; private String Telefono; } public Alumno(String Nombre, String ApellidoPaterno, String ApellidoMaterno, String NumCuenta) { this.Nombre = Nombre; this.ApellidoPaterno = ApellidoPaterno; this.ApellidoMaterno = ApellidoMaterno; this.NumCuenta = NumCuenta; //atributo=parametros } }

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

Despus creamos los mtodos de acuerdo a los atributos de nuestra clase, ya que los mtodos en java pueden tener parmetros, es decir, que un mtodo puede utilizar variables predefinidas para ser utilizadas en sus procesos. Sirven para la optimizacin de cdigo y la reutilizacin del mismo, adems de que es el que se encarga de darle o intercambiar los valores con los atributos, es decir el parmetro se encarga de darle el valor al atributo.
public class Alumno { //atributos private String Nombre; private String ApellidoPaterno; private String ApellidoMaterno; private String Sexo; private int Edad; private double Estatura; private String Licenciatura; private String Domicilio; private String NumCuenta; private String CorreoElect; private String Telefono; public Alumno(String Nombre, String ApellidoPaterno, String ApellidoMaterno,String NumCuenta) { this.Nombre = Nombre; this.ApellidoPaterno = ApellidoPaterno; this.ApellidoMaterno = ApellidoMaterno; this.NumCuenta = NumCuenta; //atributo=parametros } public void setNombre(String Nombre) { this.Nombre = Nombre; } public void setApellidoPaterno(String ApellidoPaterno) { this.ApellidoPaterno = ApellidoPaterno; } public void setApellidoMaterno(String ApellidoMaterno) { this.ApellidoMaterno = ApellidoMaterno; } public void setNumCuenta(String NumCuenta) {
5

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

this.NumCuenta = NumCuenta; } public void setDomicilio(String Domicilio) { this.Domicilio = Domicilio; } public void setEdad(int Edad) { this.Edad = Edad; } public void setCorreoElect(String CorreoElect) { this.CorreoElect = CorreoElect; } public void setLicenciatura(String Licenciatura) { this.Licenciatura = Licenciatura; } public void setEstatura(double Estatura) { this.Estatura = Estatura; } public void setSexo(String Sexo) { this.Sexo = Sexo; } public void setTelefono(String Telefono) { this.Telefono = Telefono; }

Despus de haber terminado de crear todos nuestros mtodos de todos los atributos declarados en la clase principal. Podemos crear otro mtodo que sirva para poder mostrar datos en cualquier parte de otras clases secundarias.
6

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

//este metodo muestra datos del alumno public void MostrarDatos() {

System.out.println("NOMBRE: "+this.Nombre); System.out.println("APELLIDO PATERNO: "+this.ApellidoPaterno); System.out.println("APELLIDO MATERNO: "+this.ApellidoMaterno); System.out.println("NUMERO DE CUENTA: "+this.NumCuenta); System.out.println("DOMICILIO: "+this.Domicilio); System.out.println("EDAD: "+this.Edad); System.out.println("CORREO ELECTRONICO: "+this.CorreoElect); System.out.println("LICENCIATURA: "+this.Licenciatura); System.out.println("ESTATURA: "+this.Estatura); System.out.println("SEXO: "+this.Sexo); System.out.println("TELEFONO: "+this.Telefono); } }

Adems podramos crear mtodos que puedan retornarnos valores en otras clases secundarias. Solo que esta nos ayuda a abstraer los valores que se le da a cada mtodo, pero esta vez solo permite seleccionar mtodos a la cual nos interesa ms. Es decir podemos escoger solo unos cuantos mtodos de todos los que estn.
public class Alumno { //atributos private String Nombre; private String ApellidoPaterno; private String ApellidoMaterno; private String Sexo; private int Edad; private double Estatura; private String Licenciatura; private String Domicilio; private String NumCuenta; private String CorreoElect; private String Telefono;

public Alumno(String Nombre, String ApellidoPaterno,


7

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

String ApellidoMaterno,String NumCuenta) { this.Nombre = Nombre; this.ApellidoPaterno = ApellidoPaterno; this.ApellidoMaterno = ApellidoMaterno; this.NumCuenta = NumCuenta; //atributo=parametros } public void setNombre(String Nombre) { this.Nombre = Nombre; } public void setApellidoPaterno(String ApellidoPaterno) { this.ApellidoPaterno = ApellidoPaterno; } public void setApellidoMaterno(String ApellidoMaterno) { this.ApellidoMaterno = ApellidoMaterno; } public void setNumCuenta(String NumCuenta) { this.NumCuenta = NumCuenta; } public void setDomicilio(String Domicilio) { this.Domicilio = Domicilio; } public void setEdad(int Edad) { this.Edad = Edad; } public void setCorreoElect(String CorreoElect) { this.CorreoElect = CorreoElect; } public void setLicenciatura(String Licenciatura) { this.Licenciatura = Licenciatura; } public void setEstatura(double Estatura) { this.Estatura = Estatura; }
8

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

public void setSexo(String Sexo) { this.Sexo = Sexo; } public void setTelefono(String Telefono) { this.Telefono = Telefono; } //este metodo muestra datos del alumno public void MostrarDatos() { System.out.println("NOMBRE: "+this.Nombre); System.out.println("APELLIDO PATERNO: "+this.ApellidoPaterno); System.out.println("APELLIDO MATERNO: "+this.ApellidoMaterno); System.out.println("NUMERO DE CUENTA: "+this.NumCuenta); System.out.println("DOMICILIO: "+this.Domicilio); System.out.println("EDAD: "+this.Edad); System.out.println("CORREO ELECTRONICO: "+this.CorreoElect); System.out.println("LICENCIATURA: "+this.Licenciatura); System.out.println("ESTATURA: "+this.Estatura); System.out.println("SEXO: "+this.Sexo); System.out.println("TELEFONO: "+this.Telefono); } //valor von returno public String getNombre() { return Nombre; } public String getApellidoPaterno() { return ApellidoPaterno; }

public String getApellidoMaterno() { return ApellidoMaterno; } public String getSexo() {


9

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

return Sexo; } public int getEdad() { return Edad; } public double getEstatura() { return Estatura; } public String getLicenciatura() { return Licenciatura; } public String getDomicilio() { return Domicilio; } public String getNumCuenta() { return NumCuenta; } public String getCorreoElect() { return CorreoElect; } public String getTelefono() { return Telefono; } }//fin de clase

La siguiente lnea de cdigo sirve para retornar un valor mediante un return:


10

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

A diferencia de:
public void setTelefono(String Telefono) { Telefono = Telefono }

Que solo almacena el valor de la variable y no retorna ningn valor.


public void setEstatura(double Estatura) { this.Estatura = Estatura; }

Desde la clase Escuela que es nuestra clase principal mostraremos los valores o datos que se quieren visualizar.
public class Escuela { public static void main(String[] args) {

Alumno t = new Alumno("CESARIO","RAMIREZ","TORRES","261528"); // permite mostrar los datos de los mtodos //t.MostrarDatos(); t.setNombre("OSCAR"); t.setApellidoMaterno("RAMIREZ"); t.setApellidoMaterno("TORRES"); t.setNumCuenta("261528"); t.setCorreoElect("rmzmorales_azul@hotmail.com"); t.setLicenciatura("SISTEMAS COMPUTACIONALES"); t.setSexo("MASCULINO"); t.setDomicilio("XOCHIATIPAN"); t.setEdad(19); t.setEstatura(1.19);

Esta es la forma de mandar a llamar los valores de los mtodos pero con valor retornado, permite elegir entre todos los mtodos elegir solo los objetos ms importantes.
System.out.println("SU NOMBRE ES: "+ t.getNombre()); System.out.println("APELLIDO PATERNO: "+ t.getApellidoPaterno()); System.out.println("APELLIDO MATERNO: "+ t.getApellidoMaterno()); System.out.println("LICENCIATURA: "+t.getLicenciatura()); System.out.println("DOMICILIO: "+t.getDomicilio()); System.out.println("NUMERO DE CUENTA: "+ t.getNumCuenta()); } }

SALIDA DEL PROGRAMA:

11

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

III.BIBLIOGRAFA:

Interfaces graficas y aplicaciones para internet. FRANCISCO JAVIER CEBALLOS EDITORIAL RA-MA. Java: como programar. DEITEL AND DEITEL

IV.- CODIGO FUENTE. public class Alumno { //atributos private String Nombre; private String ApellidoPaterno;
12

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

private private private private private private private private private

String ApellidoMaterno; String Sexo; int Edad; double Estatura; String Licenciatura; String Domicilio; String NumCuenta; String CorreoElect; String Telefono;

public Alumno(String Nombre, String ApellidoPaterno, String ApellidoMaterno,String NumCuenta) { this.Nombre = Nombre; this.ApellidoPaterno = ApellidoPaterno; this.ApellidoMaterno = ApellidoMaterno; this.NumCuenta = NumCuenta; //atributo=parametros } public void setNombre(String Nombre) { this.Nombre = Nombre; } public void setApellidoPaterno(String ApellidoPaterno) { this.ApellidoPaterno = ApellidoPaterno; } public void setApellidoMaterno(String ApellidoMaterno) { this.ApellidoMaterno = ApellidoMaterno; } public void setNumCuenta(String NumCuenta) { this.NumCuenta = NumCuenta; } public void setDomicilio(String Domicilio) { this.Domicilio = Domicilio;} public void setEdad(int Edad) { this.Edad = Edad;} public void setCorreoElect(String CorreoElect) { this.CorreoElect = CorreoElect;} public void setLicenciatura(String Licenciatura) { this.Licenciatura = Licenciatura;} public void setEstatura(double Estatura) { this.Estatura = Estatura;}
13

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

public void setSexo(String Sexo) { this.Sexo = Sexo;} public void setTelefono(String Telefono) { this.Telefono = Telefono;} //este metodo muestra datos del alumno public void MostrarDatos() { System.out.println("NOMBRE: "+this.Nombre); System.out.println("APELLIDO PATERNO: "+this.ApellidoPaterno); System.out.println("APELLIDO MATERNO: "+this.ApellidoMaterno); System.out.println("NUMERO DE CUENTA: "+this.NumCuenta); System.out.println("DOMICILIO: "+this.Domicilio); System.out.println("EDAD: "+this.Edad); System.out.println("CORREO ELECTRONICO: "+this.CorreoElect); System.out.println("LICENCIATURA: "+this.Licenciatura); System.out.println("ESTATURA: "+this.Estatura); System.out.println("SEXO: "+this.Sexo); System.out.println("TELEFONO: "+this.Telefono); } //valor von returno public String getNombre() { return Nombre; } public String getApellidoPaterno() { return ApellidoPaterno; } public String getApellidoMaterno() { return ApellidoMaterno; } public String getSexo() { return Sexo; } public int getEdad() { return Edad; } public double getEstatura() { return Estatura; } public String getLicenciatura() { return Licenciatura; }
14

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

public String getDomicilio() { return Domicilio; } public String getNumCuenta() { return NumCuenta; } public String getCorreoElect() { return CorreoElect; } public String getTelefono() { return Telefono; } }//fin de clase

15

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

<<< CLASE DEL OBJETO AUTO>>> public class Auto { private String Modelo; private String Color; private String Placas; private String NoCilindros; private String Marca; private String TipoLlantas; private String TipoAuto; private String VelocidadMax; private String NoPuertas;

EJEMPLOS

//costructor public Auto(String Mod, String Col, String Plac){ Modelo=Mod; Color=Col; Placas=Plac; } //metodos de clase public void setNoCilindros(String Cilin){ this.NoCilindros=Cilin; } public void setMarca(String mar){ this.Marca=mar; } public void setTipoLlantas(String Llantas){ this.TipoLlantas=Llantas; } public void setTipoAuto(String tipoA){ this.TipoAuto=tipoA; } public void setVelocidadMax(String VMax){ this.VelocidadMax=VMax; } public void setNoPuertas(String puertas){ this.NoPuertas=puertas; } // este metodo muestra las caracteristicas del auto
16

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

public void MostrarDatos() { System.out.println("MODELO:"+this.Modelo); System.out.println("COLOR:"+this.Color); System.out.println("PLACAS:"+this.Placas); System.out.println("NUMERO DE CILINDROS:"+this.NoCilindros); System.out.println("MARCA DEL AUTO:"+this.Marca); System.out.println("TIPOS DE LAS LLANTAS:"+this.TipoLlantas); System.out.println("TIPO DE AUTO:"+this.TipoAuto); System.out.println("VELOCIDAD MAXIMA:"+this.VelocidadMax); System.out.println("NUMERO DE PUERTAS:"+this.NoPuertas); } //metods qe retonrnan datos public String getModelo(){ return Modelo; } public String getColor(){ return Color; } public String getPlacas(){ return Placas; } public String getNoCilindros(){ return NoCilindros; } public String getMarca(){ return Marca; } public String getTipoLlantas(){ return TipoLlantas; } public String getTipoAuto(){ return TipoAuto; } public String getVelocidadMax(){ return VelocidadMax; } public String getNoPuertas(){ return NoPuertas; } }//fin clase
17

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

PRACTICA AUTOMOVIL
<<< CLASE PRINCIPAL>>> public class Automovil { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here Auto k= new Auto("2013","ROJO","MX100D34"); k.setNoCilindros("CUATRO"); k.setMarca("NISSAN"); k.setTipoLlantas("MICHEELIN"); k.setTipoAuto("DEPORTIVO"); k.setVelocidadMax("200 km/h"); k.setNoPuertas("4"); // k.MostrarDatos(); System.out.println("MODELO:"+k.getModelo()); System.out.println("COLOR:"+k.getColor()); System.out.println("PLACAS:"+k.getPlacas()); System.out.println("NUMERO DE CILINDROS:"+k.getNoCilindros()); System.out.println("MARCA:"+k.getMarca()); System.out.println("TIPO DE LLANTAS:"+k.getTipoLlantas()); System.out.println("TIPO DE AUTO:"+k.getTipoAuto()); System.out.println("VELOCIDAD MAXIMA:"+k.getVelocidadMax()); System.out.println("NUMERO DE PUERTAS:"+k.getNoPuertas()); } }

18

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

<<< CLASE DEL OBJETO OBJPC >>> public class ObjPc { String NombreEqipo; String TipoSistema; String Procesador; String MemoriaInstalada; String EdicionWindows; String Marca; String TipoPc; String ResolucionPantalla; String ColorEqipo; //constructor public ObjPc(String nomeqip, String tipsis, String procs){ NombreEqipo=nomeqip; TipoSistema=tipsis; Procesador=procs; } //metodo de clase public void setMemoriaInstalada(String MemoriaInstalada) { this.MemoriaInstalada = MemoriaInstalada; } public void setEdicoinWindows(String EdicionWindows) { this.EdicionWindows = EdicionWindows; } public void setMarca(String Marca) { this.Marca = Marca; } public void setTipoPc(String TipoPc) { this.TipoPc = TipoPc; } public void setResolucionPantalla(String ResolucionPantalla) { this.ResolucionPantalla = ResolucionPantalla; } public void setColorEqipo(String ColorEqipo) { this.ColorEqipo = ColorEqipo; } public void MostrarDatos() {
19

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

System.out.println("NOMNRE DEL EQIPO:"+this.NombreEqipo); System.out.println("TIPO DE SISTEMA DEL EQIPO:"+this.TipoSistema); System.out.println("PROCESADOR:"+this.Procesador); System.out.println("MEMORIA QUE TIENE INSTALADA EL EQIPO:"+this.MemoriaInstalada); System.out.println("MARCA DEL EQIPO:"+this.Marca); System.out.println("EDICION WINDOWS:"+this.EdicionWindows); System.out.println("EL TIPO DE PC ES:"+this.TipoPc); System.out.println("RESOLUCION DE PANTALLA:"+this.ResolucionPantalla); System.out.println("COLOR DEL EQIPO:"+this.ColorEqipo); } //metodos qe retornan datos public String getNombreEqipo(){ return NombreEqipo; } public String getTipoSistema(){ return TipoSistema; } public String getProcesador(){ return Procesador; } public String getMemoriaInstalada(){ return MemoriaInstalada; } public String getEdicionWindows(){ return EdicionWindows; } public String getMarca(){ return Marca; } public String getTipoPc(){ return TipoPc; } public String getResolucionPantalla(){ return ResolucionPantalla; } public String getColorEqipo(){ return ColorEqipo; }
20

LICENCIATURA EN SISTEMAS COMPUTACIONALES MANUAL DE PRCTICAS ASIGNATURA PROGRAMACION ORINTADA AOBJETOS II Semestre:

}//fin de la clase <<< CLASE PRINCIPAL>>> public class Pc { public static void main(String[] args) { ObjPc l= new ObjPc("SKYZEN-pc","SISTEMA OPERATIVO DE 32 BITS","INTEL (R) ATOM(TM)N270 1.60GHZ"); l.setMemoriaInstalada("(RAM) 1.00 GB"); l.setEdicoinWindows("windows 7"); l.setMarca("SKYZEN"); l.setTipoPc("laptop"); l.setResolucionPantalla("1024 x 600 (recomendado)"); l.setColorEqipo("blanco"); // l.MostrarDatos(); System.out.println("NOMBRE DEL EQIPO:"+l.getNombreEqipo()); System.out.println("TIPO DEL SISTEMA:"+l.getTipoSistema()); System.out.println("PROCESADRO DEL EQIPO:"+l.getProcesador()); System.out.println("MEMORIA INSTALADA:"+l.getMemoriaInstalada()); System.out.println("EDICION WINDOWS:"+l.getEdicionWindows()); System.out.println("MARCA DEL EQIPO:"+l.getMarca()); System.out.println("TIPO DE PC:"+l.getTipoPc()); System.out.println("RESOLUCION PANTALLA:"+l.getResolucionPantalla()); System.out.println("COLOR DEL EQIPO:"+l.getColorEqipo()); } }

21

Вам также может понравиться