Das ist ein zeitlich begrenztes Quiz.
Du hast 1 Stunde 20 Minuten um die 120 Fragen in diesem Quiz zu beantworten.
¿Una clase es la definición de las características concretas de un determinado tipo de: ?
Atributos
Métodos
AyB
Objetos
Constructor
¿Que tipo de Ámbitos existen en C#?
Públicos
Privados
Abstractos
Protegidos, privados y abstractos
Privados, protegidos y públicos
¿En C# podemos definir un método que se ejecute inicialmente y en forma automática, a este método se le denomina como: ?
Instanciar la clase
Método virtual
Interfaz
Ninguna de las anteriores
Coloca falso o verdadero si la sintaxis de este constructor esta bien definido: " public pastel(){ } "
En c# no se puede definir mas de 1 constructor en la clase
Es un bloque de código que contiene una serie de instrucciones, los programas hacen que las instrucciones se ejecuten mediante una llamada hacia el y es conocido como?
Clase
Instanciar
Clase Abstracta
Método
Observa la siguiente sintaxis y defina a que procedimiento correspode: " pastel cocinar = new pastel("Fresa","Chocolate");
En la siguiente sintaxis defina que utilizarias para acceder a la informacion: " private string pass; "
Instaciar la clase
Propiedad
Elija la sintaxis correcta de una propiedad para el EJEMPLO : private string clase;
public string clase {get{return clase;} set{clase = value;}}
public string clase () {}
string clase {}
public string clase(){ get{return clase;} set {clase = value;}}
¿Un procedimiento es el tipo de método que devolverá siempre un valor representativo?
¿Una función es un método que devuelve un valor representativo?
¿A un método le podemos enviar parámetros por valor desde la función principal?
¿En c# no podemos instanciar mas de 1 misma clase?
¿Cuando hacemos uso de una clase heredada que es lo que hereda a la nueva clase: ?
Atributos y métodos
Atributos y constructor
Propiedades
Ninguno de los anteriores
A, B y C
¿En una clase que es heredada de otra clase al momento de programar el constructor que debemos de tomar en cuenta?
El constructor de la clase padre y qué atributos pertenecen a él
Los métodos
En un método virtual no podemos cambiar el procedimiento
¿Para que nos servirá únicamente una clase abstracta?
Instanciarla
Heredar e Instanciar
Heredar
¿Para que utilizamos una interfaz?
Definir atributos que implementaremos en otras clases
Declarar métodos que implementaremos en otras clases
Para instanciar clases entre sí.
Para usar propiedades
¿Si declaramos 4 métodos en una interfaz cuantos métodos son los que deberemos utilizar en la clase que utilizara la interfaz?
1
2 ó 3
Todos
¿Se puede instanciar el constructor de una clase abstracta?
Si
No
En una aplicación de consola para leer los parámetros utilizaremos un array de variables de tipo string que llamaremos “args“.
Para cambiar el color de fondo de una aplicación de consola utilizaremos Console. ColorBackground = System.Color(“Green”);
La siguiente instrucción Console.WriteLine(“\nChar: {0} y {1}”, Char.MinValue, Char.MaxValue); nos devolverá una “a” minúscula y una “Z” mayúscula.
El tipo “long” es el tipo de número entero más alto que podemos representar en C#
El tipo “decimal” ocupa 128 bits (el doble que un tipo long) y es el tipo de número con decimales más grande que se puede representar en C#.
El tipo “double” ocupa lo mismo que el tipo “ulong“.
El tipo “char” ocupa 2 bytes que es lo mismo que el tipo entero “short” que a su vez también ocupa lo mismo que el tipo “ushort“, es decir 16 bits.
Las variables en C# a diferencia de Java, no distinguen entre mayúsculas y minúsculas.
No se pueden utilizar palabras reservadas como nombres de variables.
Las variables siempre empiezan por una letra o por el símbolo “@“.
Para escribir una comilla simple en una variable alfanumérica podemos utilizar la secuencia de escape \’
Este es un ejemplo de declaración y asignación de una variable lógica: Bool EsCierto = true;
Una variable tipo Object podemos almacenar cualquier cosa.
El tipo dynamic representa una dirección de memoria.
Mediante la instrucción “$” podemos asignar el valor null a cualquier variable.
Para saber si una variable tiene asignado algún valor distinto de null se puede utilizar la propiedad HasValue. Por ejemplo if (CodigoPostal.HasValue), siendo CodigoPostal de tipo “int” …
Para asignar el valor null a una variable tipo string podemos asignarla directamente variable = null; o bien asignado la cadena vacía variable = “”;
V1=null; V2=false; V3=(V1&V2) ; V4=(V1|V2); V5=V3&V4; dará como resultado en V5 “null“.
La conversión explícita y = (long) x; daría un error de compilación si la variable x fuera de tipo double.
Console.WriteLine (String.Format(“{0:p}”,0.2)); dará como resultado 20,00%.
Console.WriteLine (String.Format (“Importe = {0:e}”,12.35)); dará como resultado 12,35€.
Console.WriteLine (String.Format(“{0:T}”,DateTime.Now)); dará como resultado la Hora del Sistema hasta los segundos.
El método Parse se utiliza para convertir una cadena en algún tipo numérico, de igual manera se utilizará el método ToString para pasar un tipo numérico a cadena.
El método TryParse es un método sobrecargado que devuelve un valor booleano true si la conversión se realiza correctamente y false en caso contrario.
En caso de no incializar una varibale numérica el valor inicial será cero; si es una cadena el carácter vacío, a valor null si es del tipo Object, y a true si es del tipo boolean.
Las inicializaciones por defecto de las variables no se produce cuando se declaran dentro de una función.
El ámbito de las variables puede ser a nivel de bloque, a nivel de función o a nivel de clase, siendo la de mayor ámbito la que se declara a nivel de bloque.
El nivel de acceso public no se pueden utilizar en el interior de las funciones.
El nivel de acceso protected restringe el acceso a la variable únicamente al código de la clase donde está definida, así como a las de todas las clases que hereden de esta.
El nivel de acceso internal no se puede utilizar en el interior de una función.
El nivel de acceso private no se puede utilizar en el interior de una función.
Sino indicamos nada a una variable; esta se considera como public.
No se puede calcular el valor de una constante a partir de una variable.
No se puede calcular el valor de una constante a partir de una constante en tiempo de ejecución, sí se puede en cambio en tiempo de compilación.
Todas las enumeraciones comienzan por el índice 0.
Las enumeraciones se pueden utilizar como un tipo de variable.
Todas las matrices de forma directa o indirecta hay que indicarles el tamaño que tienen sus dimensiones.
Para obtener el número de casillas de una matriz utilizaremos la función GetLenght
Para saber el tamaño de una dimensión de una matriz se utiliza la función Lenght(<número dimensión>)
Para saber las dimensiones de una matriz se utiliza la función Ranking
Es posible ordenar una matriz con la función Array.Sort
Siendo “cadena1” una variable de tipo string si queremos buscar la posición del primer carácter “@” de la cadena utilizaremos la instrucción cadena1.IndexOf(“@”); en caso de existir dos caracteres “@” la función devolverá el valor -1 y en caso de no existir la función devolverá el valor 0.
Para reemplazar en una cadena se puede utilizar el método Replace.
Las estructuras “struct” se construyen únicamente a partir de la combinación de otros tipos básicos del lenguaje C#.
Las estructuras “struct” pueden incluir funciones;
La clase StringBuilder permite entre otras funciones la concatenación de cadenas, es ligeramente más lenta que la concatenación directa con el operador “+” pero evita las excepciones en caso de concatenar tipos de datos hetereogéneos.
El operador “Is” devuelve un valor booleano indicando si la variable es del tipo que se indica.
La comparación If (test1)&(test2) es menos o igual de eficiente que If (test1)&&(test2) .
El operador “%” devuelve el cociente de una división entera.
La comparación (test1)^(test2) será cierta sólo si test1 es true y test2 es true.
Esta estructura con if sería equivalente a una estructura switch de 3 opciones y un default, if (condición) { … } else { …if (condición) {…} else {…} }
En un switch si alguna opción no tiene la instrucción break el programa continuará evaluando las opciones inferiores del switch.
Una estructura while (true) { Console.Write(“a”); } provoca un error de compilación ya que detecta que estamos en un bucle infinito y no dejará compilar el programa.
Una estructura: do { … } foreach (<enumeración>); se ejecutará al menos una vez.
El siguiente bucle se ejecutará 8 veces for (k1 = 23; k1 > 0; k1=(k1–)-3) { … }
El siguiente código daría error de compilación porque se están comparando diferentes tipos de números: double num_pi = Math.PI; for (k1 = 23+(long) num_pi; k1 > -2.56; k1=(k1–)-5/2) {…}
El siguiente código intercambiaría el valor de las variables x e y sin utilizar una tercera variable Int x=-10, y=+10; x = x + y + y; y = x – y – y;
La visibilidad de un procedimiento de forma predeterminada es “private” a no ser que indiquemos otra opción en su declaración.
La ejecución de un return dentro de una función hace que la función asigne un valor a la instrucción llamante de la función y además termine la ejecución de dicha función aunque haya más cógido fuente por debajo de ella, de hecho el compilador nos dará una advertencia de que el código siguiente e return es inaccesible.
Los procedimientos de propiedades, también llamadas encapsuladores y utilizan las palabras reservadas get y set para acceder a la propiedad.
Existe la posibilidad de definir el comportamiento de un operador al usar como operando variables a priori no compatibles con el operador. Por ejemplo: public static Cliente operator + (Cliente cl1, Cliente cl2) {… return …}
Las variables por referencia siempre deben ir precedidas de la palabra reservada “ref” o “out“.
Las palabras reservadas “ref” y “out” deben ser utilizadas tanto en la llamada a la función como en la declaración de parámetros del procedimiento o función.
La diferencia entre “ref” y “out” es que mientras las variables que se pasan por “ref” no necesitan ser inicializadas, las variables que se pasan por “out” necesitan obligatoriamente ser pasadas inicializadas.
Cuando creamos un procedimiento o función que no está sobrecargado ni tiene parámetros opcionales, debemos saber a priori el número exacto de parámetros que le vamos a pasar, es decir el número de parámetros está determinado por la propia declaración de la función o procedimiento.
Es posible crear parámetros opcionales, asignándole un valor por defecto en la declaración, además hay que tener la precaución de inicializar a partir del primer parámetro inicializado, el resto de parámetros de la derecha para que ocurra ningún error de compilación.
Cuando se hace la llamada a una función o procedimiento con parámetros opcionales habría que dejar los huecos en la llamada para que el compilador sepa a qué parámetro nos estamos refiriendo, por ejemplo en una llamada a una función con 3 parámetros donde el primero es obligatorio y los dos últimos opcionales una posible llamada a esa función sería resultado = FuncioLoQue Sea (25, , ref variable3);
Los parámetros siempre deben llevar el orden en que fueron declarados excepto el caso en que sean nominados, en cuyo caso siempre podemos ponerlos como queramos, por ejemplo FuncionLoQueSea(25, parametro2: 33, “€”); siendo los parámetros del a la función Int parametro1,Int parametro2 y String parametro3.
Esta declaración de función public double Media (int[] notas) está mal le faltaría la palabra reservada params ya que estamos pasando como parámetro un array.
Esta declaración de función public double Media (int[] notas) está bien si lo que le pasamos a la función es una variable por referencia que apunte a un array de enteros.
Esta declaración de función public static double Media (param int[] notas) está bien si le pasamos por valor una serie cualquiera de números enteros, por ejemplo: Media(4*2, 2+3, 7-7).
Los objetos son la representación simbólica de las clases.
Las tres principales propiedades de los objetos son: la herencia, el polimorfismo y la instanciación.
El UML es una clase abstracta propia del lenguaje C#.
Tenemos 7 posibles combinaciones para determinar la visibilidad de una clase: public, internal, private, private internal, protected, abstract, sealed.
Protected: no permite crear instancias de esta clase, sólo sirve para ser heredada como clase base. Suelen tener los métodos definidos pero sin ninguna operatividad con lo que se suele escribir estos métodos en las clases derivadas.
Internal: cuando una clase es la última de una jerarquía, por lo que no podrá ser utilizada como base de otra clase.
Private internal: la clase tendrá las mismas propiedades que private e internal.
Private: la clase sólo puede usarse en el módulo en la que está definida.
Cuando declaramos una clase como parcial (partial) le indicamos al compilador que vamos a definir una clase en diferentes declaraciones, incluso con la posibilidad de reescribir algún método de la clase en una segunda o tercera declaración parcial de la clase.
Cuando declaramos alguna propiedad como private la única forma de acceder a ella será a través de los métodos o de la encapsulación utilizando las funciones “get” y “set“.
Un ejemplo de encapsulación sería: public String Apellido { get{ elApellido = value.ToUpper(); } set {return elApellido;}} donde elApellido sería la propiedad private.
Se pueden restringir los accesos a una propiedad, si sólo incluimos la opción “get” lo que estamos haciendo es dando permisos de lectura.
Si incluimos la opción “set” lo que hacemos es dar permisos de lectura y escritura.
No es posible crear una propiedad que haga referencia (es decir sea del mismo tipo) a la propia clase que estamos creando, ya que produciría un error de compilación. Es decir: public class Persona {… private Persona Pepe = new Persona(); … } daría error al hacer una referencia circular.
Si es posible crear una propiedad que sea un array de objetos de la misma clase que la clase que estamos creando . Es decir: public class Persona {… private Persona[] losHijos = new Persona[10]; ….}
Todos los métodos de una clase pueden manejar campos de la clase incluso si son privados.
La sobrecarga es la creación dentro de la clase, de un grupo de métodos que tienen el mismo nombre pero con un número de parámetros distinto aunque los parámetros coincidentes tienen que ser del mismo tipos de datos.
Las clases derivadas siempre heredan las propiedades y métodos de su clase base.
Las propiedades privadas no son heredadas por las clases hijas, simplemente heredarán los métodos que acceden a esas propiedades privadas.
Para poder sobrescribir un método en una clase hija, se utilizará la palabra reservada over en la clase hija y virtual en la clase heredada.
El siguiente método que se sobrescribe: public sealed void visualización () { base.visualizacion();} haría lo mismo que el método heredado, pero con la diferencia de que ese método ya no podría reescribirse en otras clases que lo hereden ya que incluye la directiva sealed.
Cuando declaramos en una clase un método como abstracto (abstract) estamos indicándole al compilador que el método no tiene implementación sólo definición.
Cuando un método es marcado como abstracto entonces la clase a la que pertenece también tiene que ser marcada como abstracto (abstract).
Además de poder hacer clases parciales (partial) también es posible hacer métodos parciales.
Para poder acceder a las propiedades de un objeto utilizaremos la siguiente sintaxis: <nombre del objeto>.<propiedad>.
Si estamos realizando una aplicación en Windows Form el objeto más aconsejable para la introducción de datos por parte del usuario es el objeto tipo Label
Un ListBox nos muestra un campo donde sólo se visualiza un registro pero puede desplegarse para ver otros valores.
Utilizaremos un TextBlock para mostrar el contenido de texto de varias líneas.
Uno de los métodos del objeto Button es el OnClickMouse