Last active
September 12, 2020 17:56
-
-
Save HiroNakamura/4478282 to your computer and use it in GitHub Desktop.
Ejemplos en Scala, algunos los hice y otros son recopilacion
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| object DynamicElvis { | |
| class DynamicImpl( x: AnyRef ) extends Dynamic { | |
| def _select_(name: String): DynamicElvis = { | |
| val mName = name.substring(0, name.length - 1 ) | |
| val mVal = x.getClass.getMethod(mName).invoke( x ) | |
| new DynamicElvis( if( mVal != null ) Some( mVal ) else None ) | |
| } | |
| def _invoke_(name: String)(args: Any*) = { | |
| error("unsupported") | |
| } | |
| } | |
| trait Elvis extends Dynamic{ | |
| def _select_(name: String): DynamicElvis = { | |
| val mName = name.substring(0, name.length - 1 ) | |
| val mVal = this.getClass.getMethod(mName).invoke( this ) | |
| new DynamicElvis( if( mVal != null ) Some( mVal ) else None ) | |
| } | |
| def _invoke_(name: String)(args: Any*) = { | |
| error("unsupported") | |
| } | |
| } | |
| class DynamicElvis( x: Option[AnyRef] ) extends Dynamic { | |
| def _select_(name: String): DynamicElvis = { | |
| if( name.endsWith( "Q" ) ){ | |
| val mName = name.substring( 0, name.length - 1 ) | |
| new DynamicElvis( | |
| x.flatMap{ cVal => | |
| val nVal = cVal.getClass.getMethod(mName).invoke( cVal ) | |
| if( nVal != null ) Some( nVal ) else None } ) | |
| } | |
| else{ | |
| error( name + "doesn't end with Q" ) | |
| } | |
| } | |
| def _invoke_(name: String)(args: Any*) = { | |
| error("unsupported") | |
| } | |
| override def typed[T] : T = { | |
| x match { | |
| case Some( v ) => v.asInstanceOf[T] | |
| case _ => null.asInstanceOf[T] | |
| } | |
| } | |
| override def toString = "Dynamic(" + x.toString + ")" | |
| } | |
| implicit def toDynamic( x :Any ): Dynamic = new DynamicImpl( x.asInstanceOf[AnyRef] ) | |
| class Person( adr :Adress ){ | |
| def adress = adr | |
| } | |
| class Adress( c :City ){ | |
| def city = c | |
| } | |
| class City( c :String ){ | |
| def code = c | |
| } | |
| def getCode( p :Dynamic ){ | |
| println( p.adressQ.cityQ.codeQ.typed[String] ) | |
| } | |
| def main( args :Array[String] ){ | |
| val p1 = new Person( new Adress( new Ort( "1111" ) ) ) | |
| val p2 = new Person( null ) with Elvis | |
| getCode( p1 ) | |
| getCode( p2 ) | |
| println( p2.adressQ.ortQ.codeQ.typed[String] ) | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package ejemplo | |
| import javax.swing.JOptionPane | |
| import java.io.FileReader | |
| import java.io.FileNotFoundException | |
| import java.io.IOException | |
| object Hola { | |
| def main(args: Array[String]): Unit = { | |
| println(testB()) | |
| testA() | |
| testC() | |
| testD() | |
| testE() | |
| } | |
| def testE():Unit={ | |
| for( w <- 0 to 3){ | |
| println(w); | |
| } | |
| println("*****************************") | |
| for( w <- 0 until 3){ | |
| println(w); | |
| } | |
| println("*****************************") | |
| for( w <- 0 to 3; z<- 8 until 9 ) { | |
| println("Valor de w:" +w); | |
| println("Value de y:" +z); | |
| } | |
| println("*****************************") | |
| val numeros = List(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) | |
| var cont = 0 | |
| for(cont <- numeros){ | |
| println(cont) | |
| } | |
| println("*****************************") | |
| var diccionario = Map("A"->1, "B" -> 2, "C"->3) | |
| println("Valor de A: "+diccionario("A")) | |
| println("*****************************") | |
| for ((k,v) <- diccionario){ | |
| printf("key: %s, value: %s\n", k, v) | |
| } | |
| println("*****************************") | |
| var contador = 0 | |
| while(contador < 4){ | |
| println("Contador: "+contador) | |
| contador = contador + 1 | |
| } | |
| numeros.foreach{ println } | |
| var suma:Int = 0 | |
| numeros.foreach{ suma+=_} | |
| printf("Suma: %d\n",suma) | |
| val vector = Vector("A","N","A"," ","M","A","R","I","A") | |
| var concatenar:String ="" | |
| vector.foreach{ concatenar+=_ } | |
| printf("%s\n",concatenar) | |
| for (v <- vector if v.startsWith("A")){ | |
| println(v) | |
| } | |
| println("*****************************") | |
| val numeral = (1 to 100000).toList | |
| println("Suma: "+numeral.reduce{_+_}) | |
| val str:String = "FERROCARRILERO".toLowerCase() | |
| printf("%s\n",str) | |
| str.foreach{println} | |
| println("*****************************") | |
| for(i <- 1 to 3) println(i) | |
| for(i <- 3 to 1) println(i) | |
| for(i <- 5 to 1 by -1) println(i) | |
| for(i <- 5 to 1 by -2) println(i) | |
| for(i <- 1 to 5 by 2) println(i) | |
| for(i <- 5 to 1 by 1) println(i) | |
| println("*****************************") | |
| val arrayInt = Array(1,2,3,4) | |
| val arrayStr = Array("1","2","3","4") | |
| arrayInt.foreach{println} | |
| arrayStr.foreach{println} | |
| println("*****************************") | |
| val tupla = (123,"Juan Perez",true,'\u0021') | |
| println("Tupla: "+tupla) | |
| } | |
| def testD():Unit={ | |
| val x: X = new X("Aldebaran de Casio") | |
| println(x.nombre) | |
| if(isX(x) == true){ | |
| println("Es de tipo X") | |
| } | |
| val y: Y = new Y("Fuller de Gilbrantad") | |
| println(y.nombre) | |
| val a = new A() | |
| val b:B = new B() | |
| try{ | |
| a.metodo() | |
| b.metodo() | |
| }catch{ | |
| case ex: Exception => { | |
| println("Ha ocurrido una excepcion") | |
| } | |
| } | |
| val z:Z = new Z("Juan Polinar Sanchez",true) | |
| z.metodo() | |
| //Esto no puede ser: atributos nombre y activo son private, no se puede acceder a ellos | |
| //if(z.activo){ | |
| //printf("%s\n",z.nombre) | |
| //} | |
| if(z.isActivo()){ | |
| println("Nombre: "+z.getNombre()) | |
| } | |
| println("***************************************") | |
| val q = new Q("Ana") | |
| printf("Nombre: %s\n",q.nombre) | |
| q.setNombre("Maria") | |
| println("Nombre: "+q.getNombre()) | |
| println("****************************************") | |
| val hijaNoAbs:HijaNoAbs = new HijaNoAbs() | |
| println("a: "+hijaNoAbs.a) | |
| //Esto no se puede: MyTrait es abstracta: | |
| //val myTrait = new MyTrait() | |
| //println("a: "+myTrait.a) | |
| val hijatrait:HijaTrait = new HijaTrait(2) | |
| println("a: "+hijatrait.a) | |
| println("****************************************") | |
| ObjetoX.nombre ="Thomas Wayne" | |
| ObjetoY.edad = 32 | |
| println("Nombre: "+ObjetoX.nombre) | |
| ObjetoY.metodo() | |
| //Esto no se puede: | |
| //MyTrait.a = 22 | |
| //println("Valor de a: "+MyTrait.a) | |
| println("****************************************") | |
| val c1 = new MyCaseClass(122200L,"Torre 123","Dominique") | |
| val c2 = new MyCaseClass(199900L,"Aldama 101","Benedictus") | |
| val c3:MyCaseClass = new MyCaseClass(12222L,"Aldonjares 232","Romulo San Pedro") | |
| val listaCaseClass = Array(c1,c2,c3) | |
| println(c1) | |
| println(c2) | |
| println(c3) | |
| println("****************************************") | |
| listaCaseClass.foreach{println} | |
| } | |
| def testC(): Unit ={ | |
| JOptionPane.showMessageDialog(null,"Estas usando javax en Scala","Scala",JOptionPane.INFORMATION_MESSAGE) | |
| try { | |
| val f = new FileReader("archivo.dat") | |
| }catch { | |
| case ex: FileNotFoundException => { | |
| println("El archivo no existe") | |
| } | |
| case ex: IOException => { | |
| println("Una excepcion al leer el archivo") | |
| } | |
| }finally { | |
| println("Hecho") | |
| } | |
| } | |
| def testB(): String = { | |
| "*** Programando en Scala como si fuera en primero ***" | |
| } | |
| def isX(x: Any): Boolean = x match { | |
| case o: X => true | |
| case _ => false | |
| } | |
| def testA():Unit={ | |
| var byte:Byte = 1 | |
| var corto:Short = 32 | |
| var entero:Int = 5 | |
| var cadena:String = "ABCD-1234" | |
| var real:Double = 45.87 | |
| var flotante = 12.6f | |
| var verdadero:Boolean = 34 > 22 | |
| var caracter:Character= '\u0099' | |
| var largo:Long = 123344L | |
| println("Byte: "+byte) | |
| println("Short: "+corto) | |
| println("Caracter: "+caracter) | |
| println("Entero: "+entero) | |
| println("Largo: "+largo) | |
| println("Cadena: "+cadena) | |
| println("Real: "+real) | |
| println("Flotante: "+flotante) | |
| println("Booleano: "+verdadero) | |
| if(verdadero){ | |
| println("Esto es verdadero") | |
| } | |
| if(caracter == '$'){ | |
| println("Esto no se vera") | |
| }else{ | |
| println("Esto si se vera") | |
| } | |
| if(!verdadero){ | |
| println("X") | |
| } else if(corto == 32){ | |
| println("Y") | |
| }else{ | |
| println("Z") | |
| } | |
| val opcion:Int = 1 | |
| var resultado:String="" | |
| opcion match { | |
| case 1 => resultado = "Alef" | |
| case 2 => resultado = "Beth" | |
| case 3 => resultado = "Gimmel" | |
| case 4 => resultado = "Daleth" | |
| case 5 => resultado = "Hei" | |
| } | |
| println(resultado) | |
| val x = if (4 == 4) 1 else 0 | |
| val y = if (5<4) "Hola" else "Adios" | |
| println("x: "+x) | |
| println("y: "+y) | |
| } | |
| } | |
| class X(val nombre:String) | |
| class Y(override val nombre:String) extends X(nombre) | |
| class A{ | |
| def metodo():Unit={ | |
| println("Metodo en A") | |
| } | |
| } | |
| class B extends A{ | |
| override def metodo():Unit={ | |
| println("Metodo en B") | |
| } | |
| } | |
| class Z(private val nombre:CharSequence, private val activo:Boolean){ | |
| def saludar():String={ | |
| "Hola, estoy en la clase Z" | |
| } | |
| def metodo():Unit={ | |
| println(saludar()) | |
| if(activo == true){ | |
| printf("Nombre: %s\n",nombre) | |
| } | |
| } | |
| def getNombre():CharSequence={ | |
| nombre | |
| } | |
| def isActivo():Boolean={ | |
| activo | |
| } | |
| } | |
| class Q(var nombre:String){ | |
| def setNombre(nombre:String):Unit={ | |
| this.nombre = nombre | |
| } | |
| def getNombre():String = { | |
| nombre | |
| } | |
| def metodo():Unit={ | |
| println("Estoy en la clase Q") | |
| } | |
| } | |
| abstract class Abstracta{ | |
| val a:Int = 0 | |
| } | |
| class HijaNoAbs extends Abstracta{ | |
| override val a:Int=1 | |
| } | |
| trait MyTrait { | |
| var a: Int | |
| } | |
| class HijaTrait(var a: Int) extends MyTrait | |
| object ObjetoX{ | |
| var nombre:String = "" | |
| } | |
| object ObjetoY{ | |
| var edad:Int = 0 | |
| def metodo():Unit={ | |
| printf("Edad: %d\n",edad) | |
| } | |
| } | |
| case class MyCaseClass(clave:Long,direccion:String,nombre:CharSequence) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * @file ScalaEjemplos | |
| * @version 0.0.1 | |
| * @author Yo | |
| * @date 06-diciembre-2013 | |
| * @url http://codemonkeyjunior.blogspot.mx/ | |
| * @description Ejemplos de código en Scala | |
| */ | |
| //11 | |
| object EjemploScala{ | |
| def main(args: Array[String]): Unit = { | |
| val list = 0::"uno"::2::"tres"::4::"cinco"::Nil | |
| list.foreach { elem => //por lo tanto, elem es tipo Any | |
| elem match { //pero gracias a pattern matching... | |
| case s:String => //podemos tener casos según el tipo de elem | |
| println(s.toLowerCase()) | |
| case i:Int => | |
| println(2*i); | |
| } | |
| } | |
| } | |
| } | |
| //10 | |
| object EjemploScala{ | |
| def main(args: Array[String]): Unit = { | |
| Console.println(pulsaciones(32)) | |
| } | |
| def pulsaciones(edad:Int): Double={ | |
| (220-edad)/15.0 | |
| } | |
| } | |
| //9 | |
| object EjemploScala{ | |
| def main(args: Array[String]): Unit = { | |
| val nombres=List("alma","maria","hugo","yezmin") | |
| nombres.foreach(n => println("hola "+n)) | |
| } | |
| } | |
| //8 case | |
| object EjemploScala{ | |
| def main(args: Array[String]):Unit={ | |
| var opc:Int=0 | |
| Console.println("Hola elige una opcion:\n1. Iniciar\n2. Detener\n3. Reiniciar\n4. Estado\n (escribe el numero):") | |
| opc=readInt | |
| opc match { | |
| case 1 => Console.println("Iniciando el proceso...") | |
| case 2 => Console.println("Deteniendo el proceso...") | |
| case 3 => Console.println("Reiniciando el proceso...") | |
| case 4 => Console.println("Mostrar el estado del proceso...") | |
| case _ => Console.println("No existe la opcion...") | |
| } | |
| } | |
| } | |
| //7 | |
| class Ventana(val ancho:Int,val alto:Int) | |
| object EjemploScala{ | |
| def main(arg: Array[String]): Unit = { | |
| val ventana= new Ventana(300,410) | |
| Console.println("ancho: "+ventana.ancho) | |
| Console.println("alto: "+ventana.alto) | |
| } | |
| } | |
| //6 | |
| case class Ventana(val ancho:Int,val alto:Int) | |
| object EjemploScala{ | |
| def main(arg: Array[String]): Unit = { | |
| val ventana= Ventana(300,410) | |
| Console.println("ancho: "+ventana.ancho) | |
| Console.println("alto: "+ventana.alto) | |
| } | |
| } | |
| //5 | |
| class Persona(val nombre:String,val edad:Int) | |
| object EjemploScala{ | |
| def main(arg: Array[String]): Unit = { | |
| val persona= new Persona("Fernando",32) | |
| Console.println("nombre: "+persona.nombre) | |
| Console.println("edad: "+persona.edad) | |
| } | |
| } | |
| //4 | |
| case class Vehiculo(val puertas:Int, val color:String) | |
| object EjemploScala{ | |
| def main(args: Array[String]): Unit = { | |
| val miVehiculo = Vehiculo(4, "Verde") | |
| Console.println("no. puertas:"+miVehiculo.puertas) | |
| Console.println("color: "+miVehiculo.color) | |
| } | |
| } | |
| //3 clase | |
| class Vehiculo(val _puertasx:Int=2,val _colorx:String=null){ | |
| private var _puertas:Int=_puertasx | |
| private var _color:String=_colorx | |
| def puertas = _puertas | |
| def puertas_= (value:Int):Unit = _puertas = value | |
| def color=_color | |
| def color_=(value:String):Unit=_color=value | |
| } | |
| object EjemploScala{ | |
| def main(args: Array[String]): Unit = { | |
| val miVehiculo=new Vehiculo(4,"Verde") | |
| Console.println("no. puertas: "+miVehiculo.puertas) | |
| Console.println("color: "+miVehiculo.color) | |
| } | |
| } | |
| // 2 clases | |
| object EjemploScala { | |
| def main(args: Array[String]):Unit={ | |
| val escalable=new Escalable("Torquemada") | |
| Console.println("nombre: "+escalable.nombre) | |
| } | |
| } | |
| class Escalable(val _nombrex:String=null){ | |
| private var _nombre:String=_nombrex | |
| def nombre=_nombre | |
| def nombre_=(value:String):Unit=_nombre=value | |
| } | |
| // conversor | |
| object EjemploScala extends App{ | |
| val CAMBIO=13.3481 | |
| Console.println("Introduce dolares:") | |
| var dolar:Double=readDouble | |
| Console.println("valor (usd): "+dolar) | |
| def resultado={ | |
| dolar*CAMBIO | |
| } | |
| Console.println("cambio (mxn):"+resultado) | |
| } | |
| // datasource: http://alvinalexander.com/scala/scala-jdbc-connection-mysql-sql-select-example | |
| import java.sql.DriverManager | |
| import java.sql.Connection | |
| object Codemonkey { | |
| def main(args: Array[String]) { | |
| // connect to the database named "mysql" on the localhost | |
| val driver = "com.mysql.jdbc.Driver" | |
| val url = "jdbc:mysql://localhost/test" | |
| val username = "root" | |
| val password = "5432" | |
| var connection:Connection = null | |
| try { | |
| Class.forName(driver) | |
| connection = DriverManager.getConnection(url, username, password) | |
| // create the statement, and run the select query | |
| val statement = connection.createStatement() | |
| val resultSet = statement.executeQuery("SELECT nombre,apellido_p,apellido_m FROM persona") | |
| while ( resultSet.next() ) { | |
| val nombre = resultSet.getString("nombre") | |
| val apellido_p = resultSet.getString("apellido_p") | |
| val apellido_m = resultSet.getString("apellido_p") | |
| println("nombre: "+nombre+" , apellido paterno: "+apellido_p+" ,apellido materno: "+apellido_m) | |
| } | |
| } catch { | |
| case e => e.printStackTrace | |
| } | |
| connection.close() | |
| } | |
| } | |
| //223 datasource | |
| object Codemonkey extends App{ | |
| import org.apache.commons.dbcp.BasicDataSource | |
| val dataSource: DataSource = { | |
| val ds = new BasicDataSource | |
| ds.setDriverClassName("org.hsqldb.jdbc.JDBCDriver") | |
| ds.setUsername("SA") | |
| ds.setPassword("") | |
| ds.setMaxActive(20); | |
| ds.setMaxIdle(10); | |
| ds.setInitialSize(10); | |
| ds.setValidationQuery("SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS") | |
| new java.io.File("target").mkdirs // ensure that folder for database exists | |
| ds.setUrl("jdbc:hsqldb:file:target/db/db") | |
| ds | |
| } | |
| // test the data source validity | |
| dataSource.getConnection().close() | |
| // get the Slick database that uses the pooled connection | |
| val database = Database.forDataSource(dataSource) | |
| } | |
| //220 object, revisar | |
| object Codemonkey extends App{ | |
| import Servicios._ | |
| println("Introduce primer número:") | |
| var num1:BigInt=readInt() | |
| println("Introduce segundo número:") | |
| var num2:BigInt=readInt() | |
| println("número factorial de: "+num1+" ,es: "+factorial(num1)) | |
| println("número factorial de: "+num2+" ,es: "+factorial(num2)) | |
| try{ | |
| println("número combinatorio de "+num1+" y "+num2+" ,es:"+combinatorio(num1,num2)) | |
| }catch{ | |
| case e:Exception=>println("Error: "+e.toString+", causa: "+e.getCause) | |
| } | |
| } | |
| object Servicios{ | |
| def factorial(n:BigInt):BigInt=if(n<0){1}else{n*factorial(n-1)} | |
| def combinatorio(m:BigInt,n:BigInt):BigInt=factorial(m)/(factorial(n)*factorial(m-n)) | |
| } | |
| //219object | |
| object Codemonkey extends App{ | |
| import Factorial._ | |
| for(x <- 1 to 10){ | |
| println(factorial(x)) | |
| } | |
| } | |
| object Factorial{ | |
| def factorial(n:BigInt):BigInt={ | |
| if(n<0){ | |
| 1 | |
| }else{ | |
| n*factorial(n-1) | |
| } | |
| } | |
| } | |
| //218 trait: http://www.tutorialspoint.com/scala/scala_traits.htm | |
| object Codemonkey extends App{ | |
| val p1 = new Point(2, 3) | |
| val p2 = new Point(2, 4) | |
| val p3 = new Point(3, 3) | |
| println(p1.isNotEqual(p2)) | |
| println(p1.isNotEqual(p3)) | |
| println(p1.isNotEqual(2)) | |
| } | |
| trait Equal { | |
| def isEqual(x: Any): Boolean | |
| def isNotEqual(x: Any): Boolean = !isEqual(x) | |
| } | |
| class Point(xc: Int, yc: Int) extends Equal { | |
| var x: Int = xc | |
| var y: Int = yc | |
| def isEqual(obj: Any) = | |
| obj.isInstanceOf[Point] && | |
| obj.asInstanceOf[Point].x == x | |
| } | |
| //217 enumeraciones | |
| import scala.util.control.Breaks._ | |
| object Codemonkey extends App{ | |
| import javax.swing.JOptionPane | |
| var nombre:String="" | |
| var direccion:String="" | |
| var fecha:String="" | |
| var sexo:String="" | |
| var diaVisita:String="" | |
| var problema:String="" | |
| try{ | |
| do{nombre=JOptionPane.showInputDialog("Introduce nombre:")}while(nombre=="") | |
| do{direccion=JOptionPane.showInputDialog("Introduce dirección:")}while(direccion=="") | |
| do{fecha=JOptionPane.showInputDialog("Introduce fecha de nacimiento:")}while(fecha=="") | |
| do{sexo=JOptionPane.showInputDialog("Introduce sexo: [m=Masculino, f=Femenino]")}while(sexo=="") | |
| do{diaVisita=JOptionPane.showInputDialog("Introduce dia de visita:")}while(diaVisita=="") | |
| do{problema=JOptionPane.showInputDialog("Introduce problema:")}while(problema=="") | |
| var x:String="" | |
| sexo match{ | |
| case "f" => x=Sexo.FEMENINO.toString() | |
| case "m" => x=Sexo.MASCULINO.toString() | |
| } | |
| val paciente=new Paciente(nombre,direccion,new java.util.Date(fecha),Sexo.withName(x),new java.util.Date(diaVisita),problema) | |
| var result:String=paciente.toString | |
| JOptionPane.showMessageDialog(null,result,"Resultado",JOptionPane.PLAIN_MESSAGE) | |
| }catch{case e:Exception=>JOptionPane.showMessageDialog(null, e.toString()+", causa: "+e.getCause(),"Ha ocurrido un error",JOptionPane.ERROR_MESSAGE)} | |
| } | |
| object Sexo extends Enumeration("MASCULINO","FEMENINO"){ | |
| //type tuSexo=Value | |
| val MASCULINO,FEMENINO=Value | |
| } | |
| class Paciente(var nombrex:String=null, var direccionx:String=null,var fechaNacx:java.util.Date=null,var sexox:Sexo.Value,var diaVisitax:java.util.Date,var problemax:String=null){ | |
| private var _nombre:String=nombrex | |
| private var _direccion:String=direccionx | |
| private var _fechaNac:java.util.Date=fechaNacx | |
| private var _sexo:Sexo.Value=sexox | |
| private var _diaVisita:java.util.Date=diaVisitax | |
| private var _problema:String=problemax | |
| def nombre=_nombre | |
| def nombre_=(value:String):Unit=_nombre=value | |
| def direccion=_direccion | |
| def direccion_=(value:String):Unit=_direccion=value | |
| def fechaNac=_fechaNac | |
| def fechaNac_=(value:java.util.Date):Unit=_fechaNac=value | |
| def sexo=_sexo | |
| def sexo_=(value:Sexo.Value):Unit=_sexo=value | |
| def diaVisita=_diaVisita | |
| def diaVisita_=(value:java.util.Date):Unit=_diaVisita=value | |
| def problema=_problema | |
| def problema_=(value:String):Unit=_problema=value | |
| override def toString():String="nombre: "+nombre+",\ndireccion: "+direccion+",\nfecha de nacimiento: "+fechaNac+",\nsexo: "+sexo+",\ndia de visita: "+diaVisita+",\nproblema: "+problema | |
| } | |
| //216 object y class | |
| object Codemonkey extends App{ | |
| val servicio=new Servicio | |
| servicio.message="Solicito información de la BD" | |
| servicio.activa | |
| } | |
| class Servicio{ | |
| private var _message:String="" | |
| def message=_message | |
| def message_=(value:String):Unit=_message=value | |
| import Servicio._ | |
| def activa():Unit={ver(message)} | |
| } | |
| object Servicio{ | |
| def ver(msg:String):Unit={println(msg)} | |
| } | |
| class X { | |
| // Prefix to call | |
| def m(x: Int) = X.f(x) | |
| // Import and use | |
| import X._ | |
| def n(x: Int) = f(x) | |
| } | |
| object X { | |
| def f(x: Int) = x * x | |
| } | |
| //215 clases | |
| object Codemonkey extends App{ | |
| val moto=new Moto("Toyota","rojo","sencilla","pequeña") | |
| println(moto.getInfo) | |
| } | |
| abstract class Vehiculo(val _marcax:String=null,val _tipox:String=null,val _colorx:String=null){ | |
| private var _marca:String=_marcax | |
| private var _tipo:String=_tipox | |
| private var _color:String=_colorx | |
| def marca = _marca | |
| def marca_= (value:String):Unit = _marca = value | |
| def tipo=_tipo | |
| def tipo_=(value:String):Unit=_tipo=value | |
| def color=_color | |
| def color_=(value:String):Unit=_color=value | |
| def getInfo():String={"marca: "+_marca+" ,tipo: "+_tipo+" , color: "+_color} | |
| } | |
| class Moto(override val _marcax:String,override val _tipox:String,override val _colorx:String,val _tamanyox:String=null) extends Vehiculo(_marcax,_colorx,_tipox){ | |
| private var _tamanyo:String=_tamanyox | |
| def tamanyo = _tamanyo | |
| def tamanyo_= (value:String):Unit = _tamanyo = value | |
| override def getInfo():String={super.getInfo+" ,tamaño: "+_tamanyo} | |
| } | |
| //214 paso de parámetros | |
| object Codemonkey extends App{ | |
| try{ | |
| for(arg <- 0 to args.length ){ | |
| println(arg) | |
| } | |
| }catch{ | |
| case e:Exception=>println(e.getCause()) | |
| } | |
| } | |
| //213 clases internas y externas | |
| import collection.mutable._ | |
| object Codemonkey extends App{ | |
| val chatter = new Network | |
| val myFace = new Network | |
| val fred = new chatter.Member("Fred") | |
| val wilma = chatter.join("Wilma") | |
| fred.contacts += wilma // Ok | |
| val barney = myFace.join("Barney") // Has type [prettify]myFace.Member | |
| } | |
| class Network { | |
| class Member(val name: String) { | |
| val contacts = new ArrayBuffer[Member] | |
| } | |
| private val members = new ArrayBuffer[Member] | |
| def join(name: String) = { | |
| val m = new Member(name) | |
| members += m | |
| m | |
| } | |
| } | |
| //211 clases internas y externas | |
| object Codemonkey{ | |
| def main(args:Array[String]=null){ | |
| var res:String="" | |
| try{ | |
| val g = new Graph | |
| val n1 = g.newNode | |
| val n2 = g.newNode | |
| val n3 = g.newNode | |
| n1.connectTo(n2) | |
| n3.connectTo(n1) | |
| }catch{ case e:Exception => | |
| res+="\nha ocurrido un error" | |
| }finally{ | |
| if(!res.equals("")){println(res)} | |
| } | |
| } | |
| }//fin clase Codemonkey | |
| class Graph { | |
| class Node { | |
| var connectedNodes: List[Node] = Nil | |
| def connectTo(node: Node) { | |
| if (connectedNodes.find(node.equals).isEmpty) { | |
| connectedNodes = node :: connectedNodes | |
| } | |
| } | |
| } | |
| var nodes: List[Node] = Nil | |
| def newNode: Node = { | |
| val res = new Node | |
| nodes = res :: nodes | |
| res | |
| } | |
| } | |
| //210 try catch | |
| object Codemonkey extends App{ | |
| try { | |
| //throwsException(); | |
| } catch { | |
| case e: IllegalArgumentException => println("illegal arg. exception"); | |
| case e: IllegalStateException => println("illegal state exception"); | |
| //case e: IOException => println("IO exception"); | |
| } finally { | |
| println("this code is always executed"); | |
| } | |
| } | |
| //209 arrays | |
| object Codemonkey extends App{ | |
| val MAX=4 | |
| var myArray : Array[String] = new Array[String](MAX) | |
| myArray(0) = "Fernando"; | |
| myArray(1) = "Veronica"; | |
| myArray(2) = "Maribel"; | |
| myArray(3) = "Yezmin"; | |
| for(i <- 0 until myArray.length){ | |
| println("i es: " + i); | |
| println(" " + myArray(i)); | |
| } | |
| println("__________________") | |
| for(myString <- myArray) { | |
| println(myString); | |
| } | |
| println("llenando array: ") | |
| var otroArray:Array[Int]=new Array[Int](MAX) | |
| for(j <- 0 until otroArray.length){ | |
| println("Introduce valor ["+j+"]: ") | |
| otroArray(j)=readInt | |
| } | |
| println("array:") | |
| for(otro <- otroArray){ | |
| println(otro) | |
| } | |
| } | |
| // 208 uso de singleton | |
| object Codemonkey extends App{ | |
| var aMain : Main = new Main(); | |
| aMain.sayHelloWorld(); | |
| Main.sayHi(); | |
| } | |
| class Main { | |
| def sayHelloWorld() { | |
| println("Hola mundo en Scala"); | |
| } | |
| } | |
| object Main { | |
| def sayHi() { | |
| println("Hola!"); | |
| } | |
| } | |
| //207 constructores | |
| object Codemonkey extends App{ | |
| val fernando=new Simple | |
| println("hola "+fernando.getMiNombre) | |
| } | |
| class Simple{ | |
| private var miNombre:String="Fernando" | |
| //constructor | |
| def this(nombre:String)={ | |
| this | |
| this.miNombre=nombre | |
| } | |
| def getMiNombre():String={return this.miNombre} | |
| } | |
| //206 menu, uso de "switch" | |
| object Codemonkey extends App{ | |
| println("Introduce primer numero: ") | |
| var num1=readInt | |
| println("Introduce segundo número:") | |
| var num2=readInt | |
| while(true){ | |
| var opcion=Menu.menu | |
| opcion match { | |
| case 1 => println("suma: "+Menu.suma(num1,num2)) | |
| case 2 => println("resta: "+Menu.resta(num1,num2)) | |
| case 3 => println("producto: "+Menu.producto(num1,num2)) | |
| case 4 => println("division: "+Menu.division(num1,num2)) | |
| case 5 => Menu.salida | |
| } | |
| }//fin while | |
| } | |
| object Menu{ | |
| def menu:Int={ | |
| var opc:Int=0 | |
| println("\tMenu") | |
| println("1. Suma") | |
| println("2. Resta") | |
| println("3. Producto") | |
| println("4. División") | |
| println("5. Salir") | |
| do{ | |
| println("Elije una opción: ") | |
| opc=readInt() | |
| }while(opc <0 || opc >5) | |
| return opc | |
| } | |
| def suma(n1:Int,n2:Int)={n1+n2} | |
| def resta(n1:Int,n2:Int)={n1-n2} | |
| def producto(n1:Int,n2:Int)={n1*n2} | |
| def division(n1:Int,n2:Int):Double={n1/n2} | |
| def salida={System.exit(0)} | |
| } | |
| //205 closures | |
| import javax.swing.JOptionPane | |
| object Codemonkey extends App{ | |
| var edad:Int=Integer.parseInt(JOptionPane.showInputDialog("Introduce tu edad: ")) | |
| val pulsaciones= (i:Double) => (220-i)/15 | |
| JOptionPane.showMessageDialog(null,"pulsaciones obtenidas: "+pulsaciones(edad),"Resultado",JOptionPane.PLAIN_MESSAGE) | |
| } | |
| //204 ejecutar comando | |
| import scala.sys.process._ | |
| import javax.swing.JOptionPane | |
| object Codemonkey extends App{ | |
| var comando:String=JOptionPane.showInputDialog("Introduce comando valido: ") | |
| var result=comando!! | |
| println("resultado: "+result.toString) | |
| } | |
| //203 objetos y traits | |
| object Codemonkey extends App{ | |
| val fernando=new Person("Fernando","Carraro",31,"Ing. en computación") | |
| println(fernando.greet(true)) | |
| val especialista=new Linguist("Ariel","Carraro",32,"Programación funcional","Scala") | |
| println(especialista.workGreeting) | |
| val estudiante=new Student("UAEMex","Informatica") | |
| println(estudiante.workGreeting) | |
| val cientifico=new ComputerScientist("Uriel","Carraro",32,"Informatico","Scala") | |
| println(cientifico.workGreeting) | |
| } | |
| trait Worker{ | |
| def workGreeting:String | |
| } | |
| class Person ( | |
| val firstName: String, | |
| val lastName: String, | |
| val age: Int, | |
| val occupation: String | |
| ) { | |
| def fullName: String = firstName + " " + lastName | |
| def greet (formal: Boolean): String = { | |
| if (formal) | |
| "Hola, mi nombre es " + fullName + ". Soy un " + occupation + "." | |
| else | |
| "Hola, mi nombre es " + firstName + "!" | |
| } | |
| } | |
| class Linguist(firstName:String,lastName:String,age:Int,val speciality:String,val favoriteLanguage:String)extends Person(firstName, lastName, age, "linguist") { | |
| def workGreeting ="Como un " + occupation + ", soy especialista en " + speciality + " al igual a quienes les gusta este lenguaje: " + favoriteLanguage + "." | |
| } | |
| class Student (school: String, subject: String) extends Worker { | |
| def workGreeting = "Estoy estudiando en " + subject + " en " + school + "!" | |
| } | |
| class ComputerScientist ( | |
| firstName: String, | |
| lastName: String, | |
| age: Int, | |
| val speciality: String, | |
| favoriteProgrammingLanguage: String | |
| ) extends Person(firstName, lastName, age, "cientifico") with Worker { | |
| def workGreeting = | |
| "como un " + occupation + ", Trabajo como " + speciality + ". La mayor parte de mi código esta escrito en " + favoriteProgrammingLanguage + "." | |
| } | |
| //202 objetos y traits | |
| object Codemonkey extends App{ | |
| println(Minino.toString) | |
| Minino.maullar | |
| } | |
| trait Gato{ | |
| def maullar={println("Miau !!")} | |
| } | |
| object Minino extends Gato{ | |
| var nombre:String="Felix" | |
| var edad:Int=5 | |
| var tamanyo:String="mediano y muy discreto" | |
| override def toString()={"Minino(nombre: "+nombre+" , edad: "+edad+" , tamaño: "+tamanyo+")"} | |
| } | |
| //201 mapas | |
| object Codemonkey extends App{ | |
| val mapa=Map[String,Int]("Fernando"-> 31,"Alma"->26,"Daniel"->29,"Coco"->56) | |
| //1 | |
| mapa foreach ( (t2) => println (t2._1 + "-->" + t2._2)) | |
| //2 | |
| mapa foreach {case (key, value) => println (key + "-->" + value)} | |
| //3 | |
| for ((key, value) <- mapa) println (key + "-->" + value) | |
| } | |
| //200 mapas | |
| object Codemonkey extends App{ | |
| val mapaPais=Map[String,String]("Mexico"->"Ciudad de México","Argentina"->"Buenos Aires","Chile"->"Santiago de Chile","Uruguay"->"Monte Video") | |
| mapaPais.foreach(p => println("llave=" + p._1 + ", valor=" + p._2)) | |
| mapaPais foreach(m=> println("llave: "+m._1)) | |
| mapaPais foreach(m=> println("valor: "+m._2)) | |
| } | |
| //199listas | |
| object Codemonkey extends App{ | |
| val numeros=List(87,453,6,0,32,13,542,71) | |
| val nombres=List("Tomas","Romulo","Yanet","Maria Isabel","Hilda") | |
| for(num <- numeros) {println(num)} | |
| for(nom <- nombres) {println (nom)} | |
| var suma:Int=0 | |
| numeros.foreach(suma+=_) | |
| println("suma: "+suma) | |
| } | |
| //198 clases y objetos | |
| object Codemonkey extends App{ | |
| println(new Sencilla().getNombre) | |
| val otra=new Otra("Hola aprendiz de Scala") | |
| otra.verMensaje | |
| println(Mono.datosCompletos) | |
| Superman.datosCompletos | |
| } | |
| class Sencilla{ | |
| def getNombre()=println(new Sencilla().getClass().getName()) | |
| } | |
| class Otra(mensaje:String){ | |
| def verMensaje()={println(mensaje)} | |
| } | |
| object Mono{ | |
| val nombre="John Monkey" | |
| val edad=3 | |
| val tipo="chimpance" | |
| val ocupacion="jugador profesional de mono blocks" | |
| def datosCompletos:String="Mono(nombre: "+nombre+" , edad: "+edad+" , tipo: "+tipo+" , ocupacion: "+ocupacion+")" | |
| def saludar(ver:Boolean):String={ | |
| if(ver){datosCompletos}else{"nada que mostrar"} | |
| } | |
| } | |
| object Superman{ | |
| val nombreReal="Clark Kent" | |
| val superpoderes=List("super fuerza","super velocidad","visión de rayos X","capacidad para volar","visión de rayos laser","aliento congelante") | |
| val conocidos=Map("Bruce Wayne"->"Batman", "Lex Luthor"->"Archienemigo","Luisa Lane"->"Novia") | |
| def datosCompletos={ | |
| println("nombre real: "+nombreReal) | |
| println("superpoderes: "+superpoderes) | |
| println("conocidos: "+conocidos.keys+" "+conocidos.values) | |
| } | |
| } | |
| // 197 clases | |
| object Codemonkey extends App{ | |
| val fer =new Persona("Fernando" ,32 ,45.0 ,1.60) | |
| println(fer.toString) | |
| } | |
| class Persona(n:String,e:Int,p:Double,t:Double){ | |
| private var nombre:String=n | |
| private var edad:Int=e | |
| private var peso:Double=p | |
| private var talla:Double=t | |
| def getNombre={nombre} | |
| def getEdad={edad} | |
| def getPeso={peso} | |
| def getTalla={talla} | |
| override def toString(): String = "Persona(nombre:" +nombre + ", edad:" + edad +" , peso: "+peso+" , talla: "+talla+ ")"; | |
| } | |
| //196 introducir datos | |
| import javax.swing._ | |
| object Codemonkey extends App{ | |
| println("Introduce tu nombre: ") | |
| var nombre:String=readLine | |
| //println("Hola ",nombre)//imprime (Hola,nombre) | |
| println("Introduce tu edad: ") | |
| var edad:Int=readInt | |
| println("Introduce tu peso: ") | |
| var peso:Double=readDouble | |
| println("Hola "+nombre) | |
| println("tienes "+edad+" años de edad") | |
| println("y pesas "+peso+" kg") | |
| var cadena:String="Hola "+nombre+"\ntienes "+edad+" años de edad y pesas "+peso+" kg" | |
| JOptionPane.showMessageDialog(null,cadena,"Resultado",JOptionPane.PLAIN_MESSAGE) | |
| } | |
| //195 obtener velocidad | |
| object Codemonkey extends App{ | |
| val MAX=50 | |
| val dt=0.5 | |
| val g=9.81 | |
| val k=0.2 | |
| var cont:Double=0.0 | |
| var v0:Double=0.0 | |
| while(cont<MAX){ | |
| v0=v0+(g-(k*v0))*cont | |
| cont=cont+dt | |
| Console.println("resultado: "+v0) | |
| } | |
| Console.println("resultado final: "+v0) | |
| } | |
| //194 obtener grados Fahrenheit | |
| object Codemonkey extends App{ | |
| var valor:Double=0.0 | |
| def obtenerFahr(valor:Double)={ | |
| (1.8*valor)+32 | |
| } | |
| Console.println("Introduce valor: ") | |
| valor=readDouble | |
| Console.println("resultado: "+obtenerFahr(valor)) | |
| } | |
| //193 obtener grados Fahrenheit | |
| object Codemonkey extends App { | |
| var valor:Double=0.0 | |
| Console.println("Introduce valor: ") | |
| valor=readDouble() | |
| val obtenerFahr={ | |
| (1.8*valor)+32 | |
| } | |
| Console.println("resultado: "+obtenerFahr) | |
| } | |
| //192 Conexión | |
| import java.sql.DriverManager | |
| import java.sql.Connection | |
| object Codemonkey { | |
| def main(args: Array[String]) { | |
| // connect to the database named "mysql" on the localhost | |
| val driver = "com.mysql.jdbc.Driver" | |
| val url = "jdbc:mysql://localhost/test" | |
| val username = "root" | |
| val password = "5432" | |
| var connection:Connection = null | |
| try { | |
| Class.forName(driver) | |
| connection = DriverManager.getConnection(url, username, password) | |
| // create the statement, and run the select query | |
| val statement = connection.createStatement() | |
| val resultSet = statement.executeQuery("SELECT nombre,apellido_p,apellido_m FROM persona") | |
| while ( resultSet.next() ) { | |
| val nombre = resultSet.getString("nombre") | |
| val apellido_p = resultSet.getString("apellido_p") | |
| val apellido_m = resultSet.getString("apellido_p") | |
| println("nombre: "+nombre+" , apellido paterno: "+apellido_p+" ,apellido materno: "+apellido_m) | |
| } | |
| } catch { | |
| case e => e.printStackTrace | |
| } | |
| connection.close() | |
| } | |
| } | |
| // 191 datasource | |
| object Codemonkey extends App{ | |
| import org.apache.commons.dbcp.BasicDataSource | |
| val dataSource: DataSource = { | |
| val ds = new BasicDataSource | |
| ds.setDriverClassName("org.hsqldb.jdbc.JDBCDriver") | |
| ds.setUsername("SA") | |
| ds.setPassword("") | |
| ds.setMaxActive(20); | |
| ds.setMaxIdle(10); | |
| ds.setInitialSize(10); | |
| ds.setValidationQuery("SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS") | |
| new java.io.File("target").mkdirs // ensure that folder for database exists | |
| ds.setUrl("jdbc:hsqldb:file:target/db/db") | |
| ds | |
| } | |
| // test the data source validity | |
| dataSource.getConnection().close() | |
| // get the Slick database that uses the pooled connection | |
| val database = Database.forDataSource(dataSource) | |
| } | |
| // 190 object, revisar | |
| object Codemonkey extends App{ | |
| import Servicios._ | |
| println("Introduce primer número:") | |
| var num1:BigInt=readInt() | |
| println("Introduce segundo número:") | |
| var num2:BigInt=readInt() | |
| println("número factorial de: "+num1+" ,es: "+factorial(num1)) | |
| println("número factorial de: "+num2+" ,es: "+factorial(num2)) | |
| try{ | |
| println("número combinatorio de "+num1+" y "+num2+" ,es:"+combinatorio(num1,num2)) | |
| }catch{ | |
| case e:Exception=>println("Error: "+e.toString+", causa: "+e.getCause) | |
| } | |
| } | |
| object Servicios{ | |
| def factorial(n:BigInt):BigInt=if(n<0){1}else{n*factorial(n-1)} | |
| def combinatorio(m:BigInt,n:BigInt):BigInt=factorial(m)/(factorial(n)*factorial(m-n)) | |
| } | |
| // 189 object | |
| object Codemonkey extends App{ | |
| import Factorial._ | |
| for(x <- 1 to 10){ | |
| println(factorial(x)) | |
| } | |
| } | |
| object Factorial{ | |
| def factorial(n:BigInt):BigInt={ | |
| if(n<0){ | |
| 1 | |
| }else{ | |
| n*factorial(n-1) | |
| } | |
| } | |
| } | |
| //186 http://ebeab.com/2011/05/27/using-scala-with-jdbc-to-connect-to-mysql/ | |
| import java.sql.{Connection, DriverManager, ResultSet}; | |
| object Ejemplos extends App{ | |
| // Change to Your Database Config | |
| val conn_str = "jdbc:mysql://localhost:3306/test?user=root&password=5432" | |
| // Load the driver | |
| classOf[com.mysql.jdbc.Driver] | |
| // Setup the connection | |
| val conn = DriverManager.getConnection(conn_str) | |
| try { | |
| // Configure to be Read Only | |
| val statement = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY) | |
| // Execute Query | |
| val rs = statement.executeQuery("SELECT nombre FROM persona") | |
| // Iterate Over ResultSet | |
| while (rs.next) { | |
| println(rs.getString("nombre")) | |
| } | |
| } | |
| finally { | |
| conn.close | |
| } | |
| } | |
| object SequenceGenerator{ | |
| Class.forName("org.postgresql.Driver").newInstance | |
| def connect() = { | |
| DriverManager.getConnection("jdbc:mysql://localhost/test","root", "5432") | |
| } | |
| def generate() = { | |
| val db = connect() | |
| val st = db.createStatement | |
| val res = st.executeQuery("SELECT nombre from persona") | |
| while( res.next) { | |
| println(res.getString("nombre")) | |
| } | |
| } | |
| } | |
| //185 herencia | |
| object Ejemplos extends App{ | |
| val fecha:java.util.Date=new java.util.Date | |
| val anyo=fecha.getYear() | |
| val mes=fecha.getMonth() | |
| val dia=fecha.getDay() | |
| val gato=new Gato(5,"blanco","adela",new java.util.Date(anyo,mes,dia)) | |
| println(gato.toString) | |
| gato.sonido | |
| } | |
| abstract class Animal(val nombrex:String,val fechaNacx:java.util.Date){ | |
| private var _nombre:String=nombrex | |
| private var _fechaNac:java.util.Date=fechaNacx | |
| def nombre=_nombre | |
| def nombre_=(value:String):Unit=_nombre=value | |
| def fechaNac=_fechaNac | |
| def fechaNac_=(value:java.util.Date):Unit=_fechaNac=value | |
| override def toString():String={ | |
| "nombre: "+nombre+" , fecha de nacimiento: "+fechaNac | |
| } | |
| } | |
| class Felino(val colorx:String,override val nombrex:String,override val fechaNacx:java.util.Date) extends Animal(nombrex,fechaNacx){ | |
| private var _color:String=colorx | |
| def color=_color | |
| def color_=(value:String):Unit=_color=value | |
| override def toString():String={ | |
| super.toString+" ,color: "+color | |
| } | |
| } | |
| class Gato(var edadx:Int,override val colorx:String,override val nombrex:String,override val fechaNacx:java.util.Date) extends Felino(colorx,nombrex,fechaNacx){ | |
| private var _edad:Int=edadx | |
| def edad=_edad | |
| def edad_=(value:Int):Unit=_edad=value | |
| override def toString():String={ | |
| super.toString+" ,edad: "+edad | |
| } | |
| val message:String="Miau !!" | |
| def sonido() = println(message) | |
| } | |
| //184 herencia | |
| object Ejemplos extends App{ | |
| val fecha:java.util.Date=new java.util.Date | |
| val anyo=fecha.getYear() | |
| val mes=fecha.getMonth() | |
| val dia=fecha.getDay() | |
| val gato=new Gato(5,"blanco","adela",new java.util.Date(anyo,mes,dia)) | |
| println(gato.toString) | |
| gato.sonido | |
| } | |
| abstract class Animal(val nombrex:String,val fechaNacx:java.util.Date){ | |
| private var _nombre:String=nombrex | |
| private var _fechaNac:java.util.Date=fechaNacx | |
| def nombre=_nombre | |
| def nombre_=(value:String):Unit=_nombre=value | |
| def fechaNac=_fechaNac | |
| def fechaNac_=(value:java.util.Date):Unit=_fechaNac=value | |
| override def toString():String={ | |
| "nombre: "+nombre+" , fecha de nacimiento: "+fechaNac | |
| } | |
| } | |
| class Felino(val colorx:String,override val nombrex:String,override val fechaNacx:java.util.Date) extends Animal(nombrex,fechaNacx){ | |
| private var _color:String=colorx | |
| def color=_color | |
| def color_=(value:String):Unit=_color=value | |
| override def toString():String={ | |
| super.toString+" ,color: "+color | |
| } | |
| } | |
| class Gato(var edadx:Int,override val colorx:String,override val nombrex:String,override val fechaNacx:java.util.Date) extends Felino(colorx,nombrex,fechaNacx){ | |
| private var _edad:Int=edadx | |
| def edad=_edad | |
| def edad_=(value:Int):Unit=_edad=value | |
| override def toString():String={ | |
| super.toString+" ,edad: "+edad | |
| } | |
| val message:String="Miau !!" | |
| def sonido() = println(message) | |
| } | |
| //183 | |
| object Ejemplos extends App{ | |
| val serv=new ServicioTest | |
| val arr:Array[BigInt]=new Array[BigInt](7) | |
| arr(0)=1 | |
| arr(1)=2 | |
| arr(2)=3 | |
| arr(3)=4 | |
| arr(4)=5 | |
| arr(5)=6 | |
| arr(6)=7 | |
| var otro=Array[BigInt](8,9,10) | |
| serv.verMsg(arr) | |
| serv.verMsg(otro) | |
| } | |
| trait Servicio{ | |
| def verMsg(msg:Array[BigInt]=null):Unit | |
| } | |
| class ServicioTest extends Servicio{ | |
| def verMsg(msg:Array[BigInt]=null):Unit={ | |
| for(arg <- msg){ | |
| println("no.: "+arg+" ->"+factorial(arg)) | |
| } | |
| } | |
| def factorial(n:BigInt):BigInt={ | |
| if(n<1){1}else{n*factorial(n-1)} | |
| } | |
| } | |
| //182 | |
| object Ejemplos extends App{ | |
| val gato = new Gato() | |
| gato.sonido | |
| } | |
| abstract class Greeter { | |
| val message: String | |
| def sonido() = println(message) | |
| } | |
| class Gato extends Greeter{ | |
| val message:String = "Miau!" | |
| } | |
| //181 | |
| object Ejemplos extends App{ | |
| val serv=new ServicioTest | |
| serv.verMsg(args) | |
| } | |
| trait Servicio{ | |
| def verMsg(msg:Array[String]=null):Unit | |
| } | |
| class ServicioTest extends Servicio{ | |
| def verMsg(msg:Array[String]=null):Unit={ | |
| for(arg <- msg){ | |
| println(arg) | |
| } | |
| } | |
| } | |
| //180 | |
| trait Logger { | |
| protected def print(message: String) | |
| // override this to be notified before the application | |
| // quits due to an error | |
| protected def cleanup() { } | |
| def info(message: String) { | |
| print(s"[info] $message") | |
| } | |
| def warning(message: String) { | |
| print(s"[warning] $message") | |
| } | |
| def error(message: String) = { | |
| print(s"[error] $message") | |
| cleanup() | |
| sys.exit(1) | |
| } | |
| } | |
| class ConsoleLogger extends Logger { | |
| protected def print(message: String) { | |
| println(message) | |
| } | |
| } | |
| object Main extends App { | |
| val logger = new ConsoleLogger() | |
| logger.info("Starting up...") | |
| try { | |
| } catch { | |
| case npe: NullPointerException => | |
| logger.warning("You should have used Option!") | |
| case e: Exception => | |
| logger.error(e.getMessage) | |
| } | |
| logger.info("Completed Successfully") | |
| } | |
| //179 | |
| object Ejemplos extends App{ | |
| import Servicios._ | |
| for(arg <- args){ | |
| verMsg(arg) | |
| } | |
| } | |
| object Servicios{ | |
| def verMsg(msg:String=null):Unit={if(msg!=null){println(msg)}} | |
| } | |
| //178 | |
| object Ejemplos extends App{ | |
| import scala.io.Source | |
| import java.io.{FileReader, FileNotFoundException, IOException} | |
| val filename = "/home/fernando/workspace/Programas/EjemplosScala/arch.txt" | |
| try { | |
| for (line <- Source.fromFile(filename).getLines()) { | |
| println(line) | |
| } | |
| } catch { | |
| case ex: FileNotFoundException => println("Couldn't find that file.") | |
| case ex: IOException => println("Had an IOException trying to read that file") | |
| } | |
| } | |
| //177 | |
| object Ejemplos extends App{ | |
| import java.io.{ File, PrintWriter } | |
| val f=new File("/home/fernando/workspace/Programas/EjemplosScala/arch.txt") | |
| if(!f.exists()){ | |
| println("no existe") | |
| f.createNewFile() | |
| }else{ | |
| val writer = new PrintWriter(f) | |
| import javax.swing.JOptionPane | |
| var escrito:String="" | |
| escrito=JOptionPane.showInputDialog("Introduce dato: ") | |
| writer.write(escrito) | |
| writer.close() | |
| //println("existe") | |
| import scala.io.Source | |
| Source.fromFile("/home/fernando/workspace/Programas/EjemplosScala/arch.txt" ).foreach{ | |
| } | |
| val holmes = Source.fromFile("/home/fernando/workspace/Programas/EjemplosScala/arch.txt").mkString | |
| println(holmes) | |
| } | |
| } | |
| //176 enumeraciones | |
| object Ejemplos extends App{ | |
| import TipoDocumentos._ | |
| try{ | |
| println(tipoDoc("X")) | |
| }catch{ | |
| case e: Exception=>println(e.toString+" -- "+e.getCause) | |
| } | |
| } | |
| object TipoDocumentos extends Enumeration("XML","PDF","DOC","DOCX","TXT"){ | |
| val XML,PDF,DOC,DOCX,TXT=Value | |
| def tipoDoc(c:String):String={ | |
| c match { | |
| case "XML" => "XML Editor" | |
| case "PDF" => "Adobe Reader" | |
| case "DOC" => "Oficce 2007" | |
| case "DOCX" => "Oficce 2013" | |
| case "TXT" => "Bloc de notas" | |
| } | |
| } | |
| } | |
| //175 enumeraciones | |
| object Ejemplos extends App{ | |
| var opc:Int=1 | |
| var result:String="" | |
| opc match{ | |
| case 0 => result=Sexo.FEMENINO.toString() | |
| case 1 => result=Sexo.MASCULINO.toString() | |
| } | |
| println(" result: "+result) | |
| } | |
| object Sexo extends Enumeration("MASCULINO","FEMENINO"){ | |
| val MASCULINO,FEMENINO=Value | |
| } | |
| //174 object | |
| object Codemonkey extends App{ | |
| import Factorial._ | |
| for(x <- 1 to 10){ | |
| println(factorial(x)) | |
| } | |
| } | |
| object Factorial{ | |
| def factorial(n:BigInt):BigInt={ | |
| if(n<1){ | |
| 1 | |
| }else{ | |
| n*factorial(n-1) | |
| } | |
| } | |
| } | |
| //173trait: http://www.tutorialspoint.com/scala/scala_traits.htm | |
| object Codemonkey extends App{ | |
| val p1 = new Point(2, 3) | |
| val p2 = new Point(2, 4) | |
| val p3 = new Point(3, 3) | |
| println(p1.isNotEqual(p2)) | |
| println(p1.isNotEqual(p3)) | |
| println(p1.isNotEqual(2)) | |
| } | |
| trait Equal { | |
| def isEqual(x: Any): Boolean | |
| def isNotEqual(x: Any): Boolean = !isEqual(x) | |
| } | |
| class Point(xc: Int, yc: Int) extends Equal { | |
| var x: Int = xc | |
| var y: Int = yc | |
| def isEqual(obj: Any) = | |
| obj.isInstanceOf[Point] && | |
| obj.asInstanceOf[Point].x == x | |
| } | |
| //172 ejemplo de enumeraciones | |
| object Codemonkey extends App{ | |
| import javax.swing.JOptionPane | |
| var nombre:String="" | |
| var direccion:String="" | |
| var fecha:String="" | |
| var sexo:String="" | |
| var diaVisita:String="" | |
| var problema:String="" | |
| try{ | |
| do{nombre=JOptionPane.showInputDialog("Introduce nombre:")}while(nombre=="") | |
| do{direccion=JOptionPane.showInputDialog("Introduce dirección:")}while(direccion=="") | |
| do{fecha=JOptionPane.showInputDialog("Introduce fecha de nacimiento:")}while(fecha=="") | |
| do{sexo=JOptionPane.showInputDialog("Introduce sexo: [m=Masculino, f=Femenino]")}while(sexo=="") | |
| do{diaVisita=JOptionPane.showInputDialog("Introduce dia de visita:")}while(diaVisita=="") | |
| do{problema=JOptionPane.showInputDialog("Introduce problema:")}while(problema=="") | |
| var x:String="" | |
| sexo match{ | |
| case "f" => x=Sexo.FEMENINO.toString() | |
| case "m" => x=Sexo.MASCULINO.toString() | |
| } | |
| val paciente=new Paciente(nombre,direccion,new java.util.Date(fecha),Sexo.withName(x),new java.util.Date(diaVisita),problema) | |
| var result:String=paciente.toString | |
| JOptionPane.showMessageDialog(null,result,"Resultado",JOptionPane.PLAIN_MESSAGE) | |
| }catch{case e:Exception=>JOptionPane.showMessageDialog(null, e.toString()+", causa: "+e.getCause(),"Ha ocurrido un error",JOptionPane.ERROR_MESSAGE)} | |
| } | |
| object Sexo extends Enumeration("MASCULINO","FEMENINO"){ | |
| //type tuSexo=Value | |
| val MASCULINO,FEMENINO=Value | |
| } | |
| class Paciente(var nombrex:String=null, var direccionx:String=null,var fechaNacx:java.util.Date=null,var sexox:Sexo.Value,var diaVisitax:java.util.Date,var problemax:String=null){ | |
| private var _nombre:String=nombrex | |
| private var _direccion:String=direccionx | |
| private var _fechaNac:java.util.Date=fechaNacx | |
| private var _sexo:Sexo.Value=sexox | |
| private var _diaVisita:java.util.Date=diaVisitax | |
| private var _problema:String=problemax | |
| def nombre=_nombre | |
| def nombre_=(value:String):Unit=_nombre=value | |
| def direccion=_direccion | |
| def direccion_=(value:String):Unit=_direccion=value | |
| def fechaNac=_fechaNac | |
| def fechaNac_=(value:java.util.Date):Unit=_fechaNac=value | |
| def sexo=_sexo | |
| def sexo_=(value:Sexo.Value):Unit=_sexo=value | |
| def diaVisita=_diaVisita | |
| def diaVisita_=(value:java.util.Date):Unit=_diaVisita=value | |
| def problema=_problema | |
| def problema_=(value:String):Unit=_problema=value | |
| override def toString():String="nombre: "+nombre+",\ndireccion: "+direccion+",\nfecha de nacimiento: "+fechaNac+",\nsexo: "+sexo+",\ndia de visita: |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment