LogicGate cz4 -opis klas

Opis aktywności odpowiedzialnej za testowanie bramek

Aktywność testująca bramki będzie wyświetlać określony zestaw  symboli :

  • przyciski on /off
  • bramkę logiczną
  • lampka (świeci się /nie świeci)
  • połączenia przycisków z bramką

Przyciski będą podawać sygnały wejściowe na bramkę. Następnie bramka przekaże swój wynik na lampkę  która będzie gasnąć lub zapalać się.

Główne klasy potrzebne do zaimplementowania tych czynności to

  • OnOffButton – przycisk
  • Gate – bramka
  • Wire – przewód, połączenia poszczególnych elementów
  • Lamp – nasze światło które będzie wskazywać wynik operacji wykonywanych przez bramkę
  • Pin- piny będą elementami do których będzie można wpinać przewody, Przyciski , lampy , bramki będą zawierać piny.

Poza tymi klasami powstanie kilka pomocniczych , o których napisze w trakcie implementacji.

Implementacja Klasy Pin

package com.adam_mistal.logicgateapp;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

public class Pin {
//wymiary obiektu
public static final int Height = 25;
public static final int Width=20;
//ustawienie obiektu na obiekcie typu Canvas
private int left=0;
private int top=0;
private float right;
private float bottom;
private int centerV=0;
//obiekt Paint służy do wypełniania kolorem
private Paint paintBrush = null;
//gdy pin będzie zawierał stan wysoki zmieni kolor na czerwony
private int colorON=Color.RED;
//gdy stan będzie niski kolor szary
private int colorOff=Color.GRAY;
//jeśli pin nie będzie pinem podającym napięcie
public boolean isMaster=false;
//obecny stan pinu//niski
boolean value=false;
//pin przechwytujący stan pinu będącego masterem
public Pin refPin=null;

public Pin(boolean master){
//jeśli true pin podaje sygnał
isMaster=master;
//utworzenie i ustawienie pędzla do rysowania
paintBrush = new Paint();
paintBrush.setColor(colorOff);
paintBrush.setAlpha(150);
paintBrush.setAntiAlias(true);
paintBrush.setDither(true);
}
/***
* Pozycjonowanie położenia pinu na płótnie
* @param vertical
*
* @param horizontal
*/

public void setCenter(int vertical,int horizontal) {

centerV=vertical;
left=vertical-Width/2;
top=horizontal;
right=left+Width;
bottom=top+Height;

}

/**
* rysujemy pin
* @param canvas
*/
public void draw(Canvas canvas) {
//rysuj prostokąt o podanych narożach
canvas.drawRect(left, top, right, bottom, paintBrush);

}
/**
* pobieramy współrzędne x,y położenia pinu
* @return
*/
public Point getPoint() {

return new Point(centerV,top);
}

/**
* Ustawiamy wartość pinu
* @param b
*/
public void setValue(boolean b) {
value=b;
//jeśli pin jest masterem to uaktualnij pin powiązany z nim
if(isMaster)refPin.setValue(value);
if(value==true)
{

paintBrush.setColor(colorON);
}else{

paintBrush.setColor(colorOff);
}

}

}

Obiekty klasy pin będą rysowane jako prostokąty o wymiarach 20/25 .

Implementacja Klasy Point

package com.adam_mistal.logicgateapp;

public class Point {
		public float x;
		public float y;
		/**
		 * Klasa przechowująca informacje o współrzędnych na płótnie
		 * @param _x
		 * @param _y
		 */
		public Point(float _x,float _y){
			x=_x;y=_y;
		}

	}

Kolejne klasy będę implementował w następnych postach.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s