Partial 1 masteries

What is an object?

Something that has state and behavior, state can be things to describe the object. (Color, shape, weight, etc.) And behavior is what the object does (Running, talking, walking, etc.)

What is an attribute?

Attributes are the state of the objects, are things who will describe and make your object. If you had a cat object, your attributes would be its size, weight, color, name, etc.

What is a method?

Methods are the behavior of the object, they tell the objects what to do and how to do it. For example if you had a cat object, then the methods would be Walking, meowing, eating, etc.

What is abstraction?

Abstraction in object oriented programming is basically giving information on what the object does, but not how it does it.
Abstract classes don’t need to have abstract methods, but if a class has 1 or more abstract methods, then it needs to be declared as an abstract class.
To use an abstract class you don’t instantiate it, you inherit it from another class, and you need to provide implementation to all the abstract methods it has.

What is encapsulation?

Is wrapping the data and the code that uses said data (methods) together. When you encapsulate a class, its variables will be hidden from other classes and can only be accessed through methods of their current class. To achieve encapsulation you must declare the variables as private and provide public setter and getter methods to modify and view the variables.

What are “has-a” and “is-a” relationships?

“Has-a” relationship is basically when you describe an object, for example a Cat has 4 legs, a name, color, size and weight.

Meanwhile, a “is-a” relationship is when you categorize something, for example a cat is a mammal. You have to realize this only goes one way, for example, every cat is a mammal, but not every mammal is a cat.

What are the mechanics for class description (coding) in the JavaProgramming Language?

You have to remember that classes cannot be private, so when creating a class, it should look like this:

public class ClassName(){

}

note that the class name has no spaces and usually uses capital letter to indicate the start of a new word.

What are visibility modifiers, their purpose and use in practice?

There are basically 4 visibility and access modifiers in Java:
Default
Private
Public
Protected

The first one, the default one doesn’t use any keyword. And what it does is a variable or method declared without any modifier is only available to classes in the same package.

Private is the most restrictive, it makes variables and methods only available to the class they are declared on, classes and interfaces can’t be private.

Public is the most open one, a variable or method can be accessed by any other class. But if the class we are trying to access is in a different package, it needs to be imported.

Protected basically allows any subclasses to access the variables and methods in a superclass.

What are inheritance and polymorphism? (Specification and implementation)

Inheritance is the process where one class acquires the properties (methods and fields) of another. The information is managed in hierarchical order.
The class which inherits the properties of other is known as subclass, and the class whose properties are inherited is known as superclass. It uses the “extends” keyword.

class Mammal{

}

class Cat extends Mammal{

}

Polymorphism is the ability of an object to take many forms, the most common use is when a parent class reference is used to refer to a child class object.
Any object that can pass more then one “is-a” relationship is considered polymorphic.

public interface Vegetarian{}
public class Animal{}
public class Deer extends Animal implements Vegetarian{}

By this logic, Deer is-a animal, vegetarian, deer and object.

WSQ08 – Yo Soy 196

I finally finished this WSQ, and now that I’ve done it I don’t think is that difficult. Is a challenge, but by no means impossible.

Here’s my code.

One thing that I had wrong at first was the fact that numbers that COULD become a palindrome before 30 iterations but where too long for “int” to represent them correctly were appearing as lychrel numbers. (89 for example)

I fixed that problem by using “long” instead of “int”.

If you have any questions, feel free to ask me anytime:)

WSQ05 – Project

-This is a Work In Progress-

1st entry:

So, right now our team (Luis, Gil, Itzel and myself) are planning to make an arcade, it’ll have a main menu and at least 2 games to play. That’s the main idea and we have been talking about adding credits and how the user will earn them, but there’s nothing definitive yet.

If you’re interesed, the main menu is basically done, we just have to create each game and link them with the menu.

Here’s the menu in GitHub

I’ll update this post as we move forward with this project.

WSQ04 Flipped Learning / Abolish Grading

I just finished reading this post about abolishing grading.

It’s written by a guy who did really well in high school, but then he realized all his dreams about his education were based on getting good grades and not learning. It’s really interesting when you start thinking about it. Students actually care more about getting a good grade than learning something useful, we don’t see a new subject as “Will I ever need this in my career?” we see it as “This will be in the exam”.

It is said that students cheat because in our educational system grading is more important than learning, and it’s actually true. My dad is really strict when it comes to school,  so he always wants me to get the best grades possible, obviously as any person sometimes I fail to do so, and he gets mad. But he has never asked me “What did you learn in this class?”, instead, he asks me “What grade did you get?” and that’s it.

I think is BS that we focus so much in made up numbers that are supposed to be measures of our intelligence and dedication. We should appreciate the time each student dedicates to a subject. We shouldn’t tell students “You need to learn this, and in this way. If you don’t you’ll fail”. Everyone needs to realize you can’t test every person equally, we’re all different with different strengths and weaknesses. And our educational system doesn’t make use of it. They just ignore it.

If you support this idea, please tweet your thoughts and put #AbolishGrading.

WSQ03 – Object Oriented Programming

After I’ve seen this video i understand the basics of object oriented programming.

Object oriented programming is really simple once you get the hang of it, you just have to think (as the language says) in manner of objects, you can ask yourself this questions when you want to create something:

Is this object part of a bigger category?

How can I associate this objects?

Who or what will be able to access this?

You have to remember than Object Oriented programming is really focused on reusing and recycling code, so you have to try your best to have it well organized. And you can do so with classes, inheritance and encapsulation.

Inheritance is when two things have a “this is a…” relationship, for example, humans and cats are mammals, but not all mammals are just either humans or cats, so if you have a class human and a class cat, both of them inherit from the mammal class, not the other way around.

Encapsulation is basically asking yourself as you code “Who or what will be able to access this?” If you want that specific method or attribute to be accessed just by the class it was created on, you make it private. If you want any class to be able to access it, then make it public.

An easy example for this is when you have something that many classes use, but maybe in different ways. Humans and cats walk, but they don’t walk the same way.