'분류 전체보기'에 해당되는 글 84건

  1. 2010.08.17 내부 클래스 용도
  2. 2010.08.17 [ImageView]
  3. 2010.08.17 [LifeCycle]
  4. 2010.08.16 다중 상속의 문제점
  5. 2010.08.16 주민등록번호 추출
  6. 2010.08.16 [ShapeEx]
  7. 2010.08.16 [.java로 View Control]
  8. 2010.08.15 folding
  9. 2010.08.15 ctags & cscope
  10. 2010.08.13 C++ 생성자

내부 클래스 용도

|
http://thdwns2.springnote.com/pages/539147

1. 인스턴스 내부 클래스
Ex0608.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Outer {
	int outData = 100;
	class Inner {
		public void printInner() {
			System.out.println(outData);
		}
	}
}

public class Ex0608 {
	public static void main(String args[]) {
		Outer out = new Outer();
		Outer.Inner in = out.new Inner();
		in.printInner();
	}
}

2. static 내부 클래스
원래 클래스 앞에는 static이 붙을 수 없다. 하지만 내부 클래스일 경우는 데이터 타입처럼 사용되기 때문에 가능한데 의미는 Outer 클래스의 인스턴스가 없어도 생성 가능한 내부 클래스라는 것이다. static이므로 이미 Outer 클래스 생성시에 정의되어 있는 상태이다. 
Ex0609.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Outer {
	static int outStaticData = 100;
	static class Inner {
		public void printInner() {
			System.out.println(outStaticData);
		}
	}
}

public class Ex0609 {
	public static void main(String args[]) {
		Outer.Inner in = new Outer.Inner();
		in.printInner();
	}
}

3. 지역 클래스
Ex0610.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Outer {
	int outData = 100;
	Object outerMethod() {
		final int localFinalData = 200;
		class Inner extends Object {
			public String toString() {
				return "내부 클래스의 메소드 : " + outData + 
				", " + localFinalData;
			}
		}
		return new Inner();
	}
}
public class Ex0610 {
	public static void main(String args[]) {
		Outer out = new Outer();
		Object obj = out.outerMethod();
		System.out.println(obj.toString());
	}
}

4. 내부 무명 클래스
Ex0611.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Outer {
	int outData = 100;
	
	Object outerMethod() {
		final int localfinalData = 200;
		
		return (new Object() {
			public String toString() {
				return "내부 클래스의 메소드 : " + outData + 
				" " + localfinalData;
			}
		});
	}
}
public class Ex0611 {
	public static void main(String[] args) {
		Outer out = new Outer();
		Object obj = out.outerMethod();
		System.out.println(obj.toString());
	}
}

'Java' 카테고리의 다른 글

Exception  (0) 2010.08.23
자바 주요 클래스  (0) 2010.08.19
static vs final  (0) 2010.08.17
주민등록번호 추출  (0) 2010.08.16
자바 소수점 출력  (0) 2010.08.13
And

[ImageView]

|
1. ImageView.java 생성
2. View 클래스를 상속받은 클래스는 생성자가 반드시 있어야 하므로 ImageView(Context context) {...} 생성
3. 콘텍스트에서 리소스를 가져온다.
4. 가져온 리소스를 디코드한다.
5. onDraw()를 오버라이드하여 drawBitmap()으로 그림을 그린다.


ImageTest.java
C++pasted just now: 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package net.itisn.test;

import android.app.Activity;
import android.os.Bundle;

public class ImageTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        setContentView(new ImageView(this));
    }
}

ImageView.java
package net.itisn.test;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Rect;

public class ImageView extends android.widget.ImageView {

	private Bitmap image;
	public ImageView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		this.setBackgroundColor(Color.WHITE);
		
		//그림 읽기
		Resources r = context.getResources();
		image = BitmapFactory.decodeResource(r, R.drawable.icon);
	}
	
	@Override
	protected void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		super.onDraw(canvas);
		canvas.drawBitmap(image, 0, 0, null);
		
		int w = image.getWidth();
		int h = image.getHeight();
		Rect src = new Rect(0, 0, w, h);
		Rect dst = new Rect(0, 70, w*3, h*3+70);
		canvas.drawBitmap(image, src, dst, null);
	}
}



-end

'Android' 카테고리의 다른 글

[AlertDialog]  (0) 2010.08.18
[MenuTest]  (0) 2010.08.18
[LifeCycle]  (0) 2010.08.17
[ShapeEx]  (0) 2010.08.16
[.java로 View Control]  (0) 2010.08.16
And

[LifeCycle]

|
인텐트 : 액티비티간 메시지 전달시 사용? 일종의 객체 직렬화??

TestLifeCycle.this.startActivity(intent);
객체를 생성하지 않았으므로 자신을 가리키기 위해서는 TestLifeCycle.this를 써야 한다.

Log는 Trace에서 사용
EJB에서도 Log 사용

소스코드가 바뀌면 일일이 수정 필요

스프링 프레임워크에서는 관점지향 프로그래밍을 사용 Aspect-Oriented Programming
Aspect-O...용 컴파일러도 있음 AspectJ
컴파일하면서 로그를 삽입해줌...CrossCut

Log filter

우측 상단 창+모양 클릭 > 디버그
로그캣 > + 클릭 > Name : TestLifeCycle, Tag : TestLIfeCycle 입력 > 디버그

1. 버튼을 가져온다.
2. 버튼에 클릭이벤트를 생성한다.
3. 클릭이벤트 메소드를 정의한다. 액션뷰 인텐트를 생성한다.
4. 오버라이딩한 메소드마다 로그를 남긴다.

Intent란?

LifeCycleTest.java
package net.itisn.test;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TestLifeCycle extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Button button = (Button)this.findViewById(R.id.Button01);
		button.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				// TODO auto-generated method stub
				Intent intent = new Intent(Intent.ACTION_VIEW,
					Uri.parse("http://www.google.com"));
				TestLifeCycle.this.startActivity(intent);
			}
		});
		Log.i("TestLifeCycle", "onCreate");
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		Log.i("TestLifeCycle", "onDestroy");
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		Log.i("TestLifeCycle", "onPause");
	}

	@Override
	protected void onRestart() {
		// TODO Auto-generated method stub
		super.onRestart();
		Log.i("TestLifeCycle", "onRestart");
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		Log.i("TestLifeCycle", "onResume");
	}

	@Override
	protected void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		Log.i("TestLifeCycle", "onStart");
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		Log.i("TestLifeCycle", "onStop");
	}
}


-end


'Android' 카테고리의 다른 글

[MenuTest]  (0) 2010.08.18
[ImageView]  (0) 2010.08.17
[ShapeEx]  (0) 2010.08.16
[.java로 View Control]  (0) 2010.08.16
[RelativeLayout] 0. 레이아웃 만들기  (0) 2010.08.13
And

다중 상속의 문제점

|
#다중 상속의 문제점
1. 상속받은 두 클래스에 같은 이름의 함수가 있을 경우, 어느 함수를 호출해야 할 지 알 수 없다.

>>어느 클래스의 함수인지 명시한다.
>>객체.부모클래스::멤버함수();

2. B가 A를 상속받고, C도 A를 상속 받은 후, D가 B와 C를 상속 받는 경우, A가 두 번 포함된다. (다이아몬드 상속)

>>B와 C가 A를 virtual 상속받는다.
>>class B : virtual public A {...}
>>class C : virtual public A {...}
>>class D : public B, public C {...}
D에서 A의 멤버 함수를 사용하려면 B::멤버 함수 또는 C::멤버 함수로 사용하여야 한다.
A::멤버 함수로는 사용할 수 없다. B와 C가 virtual로 A를 상속받았기 때문이다.

'C++' 카테고리의 다른 글

C++ 생성자  (0) 2010.08.13
생성자와 소멸자  (0) 2010.08.13
c++ 오버라이딩  (0) 2010.07.03
동적 할당 0614  (0) 2010.06.14
c++ 0610  (0) 2010.06.10
And

주민등록번호 추출

|

RRNTest.java
by Parsing
class RRN {
	String[] validNum = new String[30];
	public void ValidateNumbers(String str) {
		//System.out.println(str.length());
		int i = 0, j = 0, k = 0;
		while (i < str.length()-12) {
			for (j = 0; j < 13; ++j) {
				if (!(str.charAt(i+j) >= '0' && str.charAt(i+j) <= '9')) {
					break;
				}
				else if (j == 12) {
					validNum[k] = str.substring(i, i+13);
					k++;
				}
			}
			++i;
		}
	}
	
	public void Validate() {
		for (int i = 0; i < validNum.length; ++i) {
			if (validNum[i] != null && validNum[i] != "Invalid") {
				System.out.println(ValidateYY(validNum[i]));
			}
		}
	}
	
	public String ValidateYY(String str) {
		return ValidateMM(str);
	}
	
	public String ValidateMM(String str) {
		if (str.charAt(2) == '0' && 
				str.charAt(3) >= '0' && str.charAt(3) <= '9') {
			return ValidateDD(str);
		}
		else if (str.charAt(2) == '1' && 
				str.charAt(3) >= '0' && str.charAt(3) <= '2') {
			return ValidateDD(str);
		}
		return "Invalid";
	}
	
	public String ValidateDD(String str) {
		if (str.charAt(4) == '0' && 
				str.charAt(5) >= '0' && str.charAt(5) <= '9')
		{
			return ValidateRemain(str);
		}
		else if (str.charAt(4) == '1' && 
				str.charAt(5) >= '0' && str.charAt(5) <= '9')
		{
			return ValidateRemain(str);
		}
		else if (str.charAt(4) == '2' && 
				str.charAt(5) >= '0' && str.charAt(5) <= '9')
		{
			return ValidateRemain(str);
		}
		else if (str.charAt(4) == '3' && 
				str.charAt(5) >= '0' && str.charAt(5) <= '1')
		{
			return ValidateRemain(str);
		}
		return "Invalid";
	}
	
	public String ValidateRemain(String str) {
		return str;
	}
}

public class RRNTest {
	public static void main(String[] args) {
		String str = "abc128714cd7903241081511AE@560547145666#";
		
		RRN r = new RRN();
		r.ValidateNumbers(str);
		r.Validate();
	}
}

by Regular Expression
C++pasted just now: 
import java.util.regex.Matcher;
import java.util.regex.Pattern;

class RRN {
	String rrn;
	String PatternStr = "\\d\\d(0[1-9]|1[0-2])([0-2][1-9]|3[0-1])[1-4]\\d{6}";
	//Pattern pat = Pattern.compile("\\w\\w");
	//Pattern pat = Pattern.compile("(?i)]*[src] *= *[\"\']{0,1}([^\"\'\\ >]*)");
	Pattern pat = Pattern.compile(PatternStr);

	Matcher mat;
	boolean found;

	public String FindRRN(String str) {
		mat = pat.matcher(str);
		found = mat.find();
		if (found)
			rrn = mat.group();
		else
			rrn = "Not found";
		return rrn;
	}
}

public class RRNTest {
	public static void main(String[] args) {
		String str = "abc128714cd7903241081511AE@560547145666#";
		String result;
		RRN r = new RRN();
		result = r.FindRRN(str);
		System.out.println(result);
	}
}




-end

'Java' 카테고리의 다른 글

Exception  (0) 2010.08.23
자바 주요 클래스  (0) 2010.08.19
static vs final  (0) 2010.08.17
내부 클래스 용도  (0) 2010.08.17
자바 소수점 출력  (0) 2010.08.13
And

[ShapeEx]

|
#도형 그리기
ShapeView.java
1. drawText() 이용
2. moveTo(), lineTo() 이용
package net.itisn.test;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Paint.Style;
import android.view.View;

public class ShapeView extends View {

	public ShapeView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		this.setBackgroundColor(Color.WHITE);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		super.onDraw(canvas);
		
		// 그리기 객체 생성
		Paint paint = new Paint();
		paint.setAntiAlias(true);
		
		// 선 그리기
		paint.setStrokeWidth(20);	// 굵기
		paint.setStyle(Style.STROKE);	// 실선
		paint.setColor(Color.argb(255, 255, 0, 255));
		canvas.drawLine(0, 0, 200, 200, paint);
		
		// Path를 이용한 그리기
		paint.setStrokeWidth(10);	// 굵기
		paint.setStyle(Style.STROKE);
		paint.setColor(Color.argb(255, 0, 255, 255));
		Path path = new Path();
		path.moveTo(255, 210);
		path.lineTo(0, 0);
		canvas.drawPath(path, paint);
		
		
		
	}
}


도형 그리기
package net.itisn.test;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Paint.Style;
import android.view.View;

public class ShapeView extends View {

	public ShapeView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		this.setBackgroundColor(Color.WHITE);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		super.onDraw(canvas);
		
		// 그리기 객체 생성
		Paint paint = new Paint();
		paint.setAntiAlias(true);
		
		// 선 그리기
		paint.setStrokeWidth(20);	// 굵기
		paint.setStyle(Style.STROKE);	// 실선
		paint.setColor(Color.argb(255, 255, 0, 255));
		canvas.drawLine(0, 0, 200, 200, paint);
		
		// Path를 이용한 선 그리기
		paint.setStrokeWidth(10);
		paint.setStyle(Style.STROKE);
		paint.setColor(Color.argb(255, 0, 255, 255));
		Path path = new Path();
		path.moveTo(255, 210);
		path.lineTo(0, 0);
		canvas.drawPath(path, paint);
		
		// 사각형 그리기
		paint.setColor(Color.BLUE);
		paint.setStrokeWidth(2);
		canvas.drawRect(new Rect(100, 100, 200, 200), paint);
		canvas.drawRect(300, 20, 10, 500, paint);
		
		// 라운드 사각형 그리기
		paint.setColor(Color.argb(255, 255, 0, 255));
		canvas.drawRoundRect(new RectF(10, 10, 100, 100), 10, 10, paint);
		
		// 원 그리기
		canvas.drawCircle(50, 50, 40, paint);
	}
}



-end

'Android' 카테고리의 다른 글

[ImageView]  (0) 2010.08.17
[LifeCycle]  (0) 2010.08.17
[.java로 View Control]  (0) 2010.08.16
[RelativeLayout] 0. 레이아웃 만들기  (0) 2010.08.13
XML 문법  (0) 2010.08.13
And

[.java로 View Control]

|
#자바 파일로 작성

StringEx extends Activity {
setContentView(new StringView(this));
StringView라는 클래스의 객체를 생성하여 StringEx를 넘겨준다.
그러면 StringView는 StringEx를 받아 거기에 그림을 그리거나 글을 쓴다.
StringView는 그림을 그리거나 글을 쓸 때 onDraw()가 필요하기 때문에 View를 상속받는다.
super.onDraw(canvas);를 가장 먼저 실행한 후, 원하는 작업 수행

1. onCreate
2. onStart
3. onResume
4. setContentView(new StringView(this));

StringEx.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package net.itisn.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class StringEx extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(new StringView(this));
    }
}


StringView.java
package net.itisn.test;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

public class StringView extends View {

	public StringView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		this.setBackgroundColor(Color.WHITE);
	}

	//그리기 함수
	@Override
	protected void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		super.onDraw(canvas);
		
		//그리기 객체
		Paint paint = new Paint();
		paint.setAntiAlias(true);	//그리기 객체에 안티알리아스 적용

		//문자 크기 및 색상 설정
		paint.setTextSize(12);
		paint.setColor(Color.argb(255, 0, 0, 0));

		//폰 화면 가져와서 글자 쓰기
		canvas.drawText("화면 넓이" + this.getWidth() + 
				"화면 높이" + this.getHeight(),
				0, 30, paint);
		
		//문자열의 폭 구하기
		canvas.drawText("문자열 폭" + (int)paint.ascent(), 0, 60, paint);
		
		//문자 크기 16, 색상 빨간색 설정
		paint.setTextSize(16);
		paint.setColor(Color.argb(128, 255, 0, 0));
		
		//폰 화면(canvas)에 그리기
		canvas.drawText("두번째 문자", 0, 90, paint);
		
	}
}

'Android' 카테고리의 다른 글

[LifeCycle]  (0) 2010.08.17
[ShapeEx]  (0) 2010.08.16
[RelativeLayout] 0. 레이아웃 만들기  (0) 2010.08.13
XML 문법  (0) 2010.08.13
[CustomView] 4. Thread 이용하여 그림 움직이기  (0) 2010.08.12
And

folding

|

http://cdcsman.tistory.com/146 플러그인 정리

folding

접기 : 명령모드에서 v}zf
풀기 : zo

BufExplorer
다운로드 링크 : http://www.vim.org/scripts/script.php?script_id=42
설치 : bufexplorer.vim 파일을 vim[version]/vimfiles/plugin 아래에 복사
명령어 : vim에서 :BufExplorer 입력 (대소문자 구분, :B 누르고 탭 키 누르면 자동완성)

Taglist
다운로드 링크 : http://www.vim.org/scripts/script.php?script_id=273
설치 : taglist.vim 파일을 vim[version]/vimfiles/plugin 아래에 복사 후, 열어서 let Tlist_Auto_Open = 0 -> let Tlist_Auto_Open = 1
실행 : vim이 실행되면 자동으로 실행된다.
명령어 : Ctrl + TAB : 리스트와 에디터 이동, Enter : 해당 심볼의 위치로 이동, jk : 리스트에서 위아래 이동

자동완성
명령어 : Ctrl + p : 현재 커서의 위쪽 심볼부터 정렬/ Ctrl + n : 현재 커서의 아래쪽 심볼부터 정렬

NerdTree
드라이브 변경 : :NerdTree f:\

인텔리센스
다운로드 링크 : http://insenvim.sourceforge.net/
설치 : exe 실행




'VIM 강좌' 카테고리의 다른 글

용어 tabstop shiftwidth  (0) 2010.08.23
ctags & cscope  (0) 2010.08.15
vim 사용법  (0) 2010.06.12
And

ctags & cscope

|
1. tags 파일 생성

[path]$ ctags -R or $ make tags

2. .vimrc 파일에 추가
:set tags+=[path]/tags
ex) :set tags+=../../tags
:set tagbsearch (검색 속도 향상)

3. 명령어
:ta [name] : 첫번째 검색 결과로 이동 (==Ctrl + ])
Ctrl + t : 원래 위치로 이동
:tn : 다음 검색 결과로 이동
:tp : 이전 검색 결과로 이동
:ts [name] : 결과 리스트를 출력하여 선택한 번호로 이동
:tj [name] : 결과가 하나이면 이동, 두개 이상이면 리스트 출력

== 간단한 ctags 명령어 목록 ==
:ta [name] :: name과 일치하는 태그 위치로 이동
ctrl + ]       :: 커서가 위치하고 있는 함수나 구조체의 정의로 이동
ctrl + t        :: 이전 위치로 돌아오기
:ts [name] :: name과 일치하는 태그 목록 출력
:ta /[name]:: name과 일치하는 태그 목록 출력
:tj [name]  :: 목록이 한개인 경우 이동, 여러개인 경우 목록 출력
:tn             :: 다음 태그로 이동 (tag next)
:tp             :: 이전 태그로 이동 (tag previous)
:tags         :: 이동한 태그 히스토리 목록 출력 
==============================


1. scope.files 생성
[path]$ find ./ -name *.[chS] -print > scope.files

2. 명령어
:cs add ../../scope.files : scope.files 데이터베이스 연결
:cs show : 현재 연결된 데이터베이스 리스트 출력
:cs help : 도움말 출력
:cs find [num/char] [name]




'VIM 강좌' 카테고리의 다른 글

용어 tabstop shiftwidth  (0) 2010.08.23
folding  (0) 2010.08.15
vim 사용법  (0) 2010.06.12
And

C++ 생성자

|

C++pasted 1 second ago: 
class NeedConstructor
{
public:
	const int maxCount;
	int& ref;
	int sample;
};

int main()
{
	NeedConstructor cr;

	cr.maxCount = 100;
	cr.ref = cr.sample;

	return 0;
}

class NeedConstructor
{
public:
	const int maxCount;
	int& ref;
	int sample;

	NeedConstructor();
};

NeedConstructor::NeedConstructor()
{
	maxCount = 100;
	num = sample;
}

int main()
{
	NeedConstructor cr;

	return 0;
}

class NeedConstructor
{
public:
	const int maxCount;
	int& ref;
	int sample;

	NeedConstructor();
};

NeedConstructor::NeedConstructor()
	: maxCount(100), ref(sample)
{
	sample = 200;
}

int main()
{
	NeedConstructor cr;

	cout << "cr.maxCount = " << cr.maxCount << "\n";
	cout << "cr.ref = " << cr.ref << "\n";

	return 0;
}



-end

'C++' 카테고리의 다른 글

다중 상속의 문제점  (0) 2010.08.16
생성자와 소멸자  (0) 2010.08.13
c++ 오버라이딩  (0) 2010.07.03
동적 할당 0614  (0) 2010.06.14
c++ 0610  (0) 2010.06.10
And
prev | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ··· | 9 | next