Sunday, February 8, 2015

[ADF1] - Day 3: interface

Today, game is an important industrial of software, one of most important features that a game must have is the extensible capacity. As an architect, you know the meaning of “implement into interface not into implementation”, so you must:

Create an interface for actor that can do (mark of 2):
- forward()
- jump()
- blink()

public interface Action { public void Forward(); public void Jump(); public void Blink(); }

Create an implementation of the above interface for current version (mark of 3)


public class Actor implements Action { private int step = 100; private Circle face; private Circle leftEye; private Circle rightEye; private Triangle mouth; public Actor(){ //face face = new Circle(); face.makeVisible(); face.changeSize(70); face.moveHorizontal(107); face.moveVertical(100); face.changeColor("yellow"); //leftEye leftEye = new Circle(); leftEye.makeVisible(); leftEye.changeSize(15); leftEye.moveHorizontal(120); leftEye.moveVertical(120); leftEye.changeColor("black"); //rightEye rightEye = new Circle(); rightEye.makeVisible(); rightEye.changeSize(15); rightEye.moveHorizontal(150); rightEye.moveVertical(120); rightEye.changeColor("black"); //mouth mouth = new Triangle(); mouth.makeVisible(); mouth.changeSize(8,30); mouth.moveHorizontal(112); mouth.moveVertical(192); mouth.changeColor("brown"); } public void Forward(){ face.moveHorizontal(step); leftEye.moveHorizontal(step); rightEye.moveHorizontal(step); mouth.moveHorizontal(step); } public void Jump(){ face.moveVertical(-step/2); leftEye.moveVertical(-step/2); rightEye.moveVertical(-step/2); mouth.moveVertical(-step/2); face.moveVertical(step/2); leftEye.moveVertical(step/2); rightEye.moveVertical(step/2); mouth.moveVertical(step/2); } public void Blink(){ for (int i = 0; i<20; i++){ leftEye.changeColor("red"); rightEye.changeColor("red"); leftEye.changeColor("black"); rightEye.changeColor("black"); } } }

Make an explanation of “implement into interface not into implementation” for your team (mark of 4)

Thực thi các phương thức trong interface chứ không phải thực thi các phương thức đó.


What is advantage or disadvantage of using interface in software development? (mark of 5)

advantage:
- Tạo ra những phương thức chung cho các class, khi sử dụng sẽ định nghĩa lại các phương thức đó --> đỡ phức tạp khi phải đặt tên cho các method có cùng tính chất trong các class khác nhau.
- Sử dụng interface trong hệ thống lớn có nhiều class sẽ làm cho code dễ hiểu hơn, khi người khác nhìn vào sẽ nắm bắt được những phương thức cơ bản trong hệ thống.
disadvantage
- Vì khi sử dụng đến method phải implements interface nên sẽ làm code chạy chậm đi.

No comments:

Post a Comment