프로젝트 완성.

드디어 프로젝트가 완료가 됐다.

아무런 자바의 지식이 없던 학기 초 부터 학기 말 까지 많은 발전을 했다고 평가를 해보고 싶다.
그러나 냉정한 만성피로를 절대 그렇지 않다고 생각하는 바다..ㅠㅠ

분명 객체지향프로그래밍에 대해서 깨달음을 알아가고 있고 설명을 간단하게 할 수 있을 만큼은 이해 하고 있다.

그러나 코딩 된 소스를 보면 아쉬움이 남는다. 절차지향 적인 부분이 생각보다 많이 차지를 하고 있고
그 부분을 다시 수정을 한다면 많은 부분이 수정이 되야 하는 문제도 있다.
또한 여러 날을 나눠서 코딩한 만큼 어떤 부분은 객체지향 적인 방면
어떤 부분은 절차지향적이다. 컨디션과 기분 상태에 따라 코딩 방식이 달라지는 것도 알게 됐다.

그래도 결과에 대한 만족은 하고 있다. 프로그래밍 실력은 향상 된 것이 사실이기 때문이다.

나만의 룰과 노하우를 만든다는 것이 중요하다. 다음 프로그래밍 작업을 하게 될 경우에는
좀 귀찮더라도 자신만의 규칙과 틀을 만들어서 규칙 대로 코딩을 하는 습관을 들여야 한다는 것이 필요하다고 생각된다.

그럼 간단하게 평가를 해보겠다.

프로젝트의 내용은 얼마나 객체 지향 적인가?
 => 어떤 관점으로 봐야 할지는 모르겠지만 스스로 느끼기엔 전체 소스 중 50% 정도를 객체지향 적이라고 평가하겠다.

제시된 조건에 맞게 프로그래밍 했는가?
 => 제시된 조건에는 모두 만족을 하는 프로젝트이다. 그러나 활용도는 다소 떨어진다.

확실하게 알고 있다고 생각하는 부분은?
 => 클래스를 생성하여 생성자와 메소드를 사용하는 것과 오버로딩과 오버라이딩에 대해서는 완벽하다고 본다.

부족하다고 생각 되는 부분은?
 => 인터페이스와 추상클래스이다. 특히 인터페이스에 대해서는 더 파고 들어야 한다고 생각된다.

마지막으로 종합 해보면?
 => 확실하게 알고 있는 부분을 제외하고는 어중간한 부분도 많이 존재 한다. 알고는 있지만 정확하게 원리까지
깨우치지 못한 부분도 있고 절차지향적인 프로그래밍을 하는 습관 때문인지 어떤 부분은 객체지향이 더 어렵게
생각 되기도 한다. 일부러 라도 작은 것 하나 까지도 객체지향적인 프로그래밍을 하는 습관으로 고쳐야 할 것이다.

그럼 완성한 프로젝트를 동영상으로 녹화한 것과 class 파일을 올려 놓겠다.

궁금한 사람은 돌려보시길
Project.exe - 클래스 파일
Project.avi - 프로그램 동작 녹화 영상

by 만성피로 | 2008/06/06 20:24 | 프로젝트 일지 | 트랙백 | 덧글(1)

자바의 또 다른 배열 - Vector

이번에는 벡터에 관한 이야기를 해봅시다.

제목에서 자바의 또다른 배열이라고 제가 표현을 했습니다.
그 이유는 음..정확하게 배열이라고 할 수 있는지에 대해서는 정확히 모르겠지만

배열이라고 생각하는 편이 이해를 더 도울 수 있다고는 봅니다.
물론 배열하고는 다른점도 많겠지요.

그럼 일단 배열에 대해서 잠깐 이야기를 해 봅시다.

배열은 우리가 흔히 알기로는 같은 형태의 변수를 하나의 묶음으로 다루는 것이라고 하지요.
일일이 변수를 선언하지 않고 배열을 이용해서 같은 형태를 쉽게 생성해서 편리하지요.
그리고 값을 저장 할 때도 편하기도 합니다.

int a[] = new int[10];
이라고 생성을 한다면 10개의 int 형 변수를 저장하는 공간이 생기는 것이지요.
단점이 있다면 11개의 정수를 저장하려면 10개를 생성 했기 때문에 불가능하다는 것이겠지요.
이미 생성한 것은 한정적이기 때문에 다시 배열을 더 선언하는 방법으로 해야 하는 단점이 있습니다.

그럼 이제 배열과 비슷하지만 배열과는 조금 다른 벡터에 대해서 이야기를 합시다.

벡터는 10개의 정수형 변수를 벡터에 저장한다면 저장이 됩니다.
11개의 변수를 저장한다고 했을 경우에도 가능합니다.
그럼 11개의 데이터를 저장하는데는 배열이라면 11개의 배열을 선언해야겠지요.
그러나 벡터는 5개의 저장 공간을 마련해도 11개가 저장이 됩니다.
바로 이점이 배열보다 좋은 점이죠. 가장 기본적인 면에서 말하면 그렇습니다.

Vector vec = new Vector();
위와 같이 선언을 한다면 벡터는 10개의 공간을 생성합니다.
(위와 같이 한다면 기본으로 생성하는 것은 10개입니다.)
그런데 어떻게 11개의 데이터를 저장이 가능할까요?

그것은 바로 벡터는 더 많은 공간을 필요로 한다면 자동적으로 생성을 하는 특징이 있습니다.
10개의 공간에 11개의 변수를 저장한다면 벡터는 추가적으로 10개의 공간을 더 만들게 됩니다.
편리하지요?

그럼 배열과 비슷한 점은 무엇일까요?
백터는 이렇게 저장된 내용을 배열 처럼 0 부터 1, 2, 3, 4.. 이렇게 순번을 가지고 있지요.

자 그럼 여기까지 벡터의 기본에 대해서 이야기 했습니다.

그럼 벡터의 장점에 대해서 조금 더 이야기 해봅시다.

벡터는 10개의 데이터를 가지고 있을 때, 만약 5번째 데이터의 값을 지운다고 했을 경우에
5번 째 내용이 지워진다고 해서 중간에 데이터가 빈 벡터가 남아 있지는 않습니다.
배열이라면 그렇겠지만 벡터는 자동적으로 0부터 8번 까지 변수를 가지게 됩니다.
10개의 변수를 가지고 있을 떄는 0~9 까지가 존재했지요.

잘만 이용하면 참 편리하겠지요?

보통 많은 데이터를 벡터에 저장하게 되고 그 데이터를 수정 또는 삭제를 일부분 하고 난 뒤에
파일로 저장하거나 다른 곳에 옮기기가 편리합니다.
예를 들어 주소록의 정보를 입력 받아 저장하거나, 영어단어를 입력 받았을 경우를 생각해보면
편리하겠지요?

그럼 간단하게 벡터에 사용되는 메소드에 대해서 알아봅시다.

size() 메소드는 벡터의 길이를 나타냅니다.
10개의 변수가 저장된 벡터라면 백터.size()는 10 입니다.

add() 메소드는 벡터의 값을 저장 할 때 사용됩니다.

remove() 메소드는 벡터의 값을 지우고자 할 때 사용됩니다.

clear() 메소드는 벡터의 값을 전부 지울 때 사용됩니다.

remove()와 clear()는 비슷한 기능을 갖지만 조금 다릅니다.

그리고 나머지는 API를 보고 공부하시기 바랍니다.
확실히 크게 어렵지 않기 때문에 보면 다 이용이 가능합니다.

항상 그렇듯 프로그래밍은 직접 해보면서 이해를 하고 단순하게 생각 하기 보다는 논리적인 사고로 접근을 하시면
참 재미가 있다는 것을 알 수 있습니다.

그럼 벡터에 대한 기본 이야기를 이상 끝내도록하겠습니다.
내용이 좀 부실한 듯 하네요 ^^;

캄사합니다 ~

by 만성피로 | 2008/06/03 23:07 | 프로젝트 일지 | 트랙백 | 덧글(2)

프로젝트 - 80% 구현!

대부분의 기능을 다 구현해 간다.

파일 클래스를 이용함으로써 가장 중요했던 작성된 가계부 내용을 파일로 저장이 가능해 졌다.

파일을 읽어오기 성공 화면이다. 파일의 내용은 문자열을 저장하는 배열에 넣고
이 후 배열의 값을 다시 벡터에 넣는 방식으로 완성 했다.

다음은 파일 저장 화면
이후 파일을 다시 불러오면

파일 저장은 벡터의 내용을 오브젝트 클래스에 넣고 이 것을 파일에 저장하는 방식을 취한다.

파일은 총 12개만 존재하게 된다. 각 월별로 1개의 파일로 저장을 하게 되는데 작성이 완료 된 후
다시 사용을 하게 될 경우에 파일의 내용을 초기화 하는 부분을 마져 적용 시키려 한다.

그리고 확장자 명은 일부러 넣지 않았다. 그러나 파일을 열어 보면 텍스트 파일인데
이렇게 한 이유는 사용자가 원하는 파일명으로 텍스트 파일을 저장하는 형태로 만들게 하기 위해서다.

텍스트 파일을 따로 저장을 하게끔 하는 기능은 엑셀에서 사용 할 수 있도록 하는 호환성을 주기 위해서다.

그리고 날짜 순으로 정렬하는 벡터 정렬을 추가할 예정이다.

끝으로 전체적인 작업보다 더 걱정되는 것은 객체지향적인 프로그래밍이라 보기에는 좀 많은 부분이
절차지향적이라는 점이다.
이 점에 대해서 고민도 해봤는데 분명 본인은 객체지향을 조금 안다(?) 라는 정도라고 생각은 되지만
코딩한 소스를 보면 절차지향 프로그래밍을 한 부분이 전체에서 60% 정도를 차지 하고 있다.

지속적으로 불필요한 부분을 점검하면서 수정을 해야 겠다.

by 만성피로 | 2008/06/03 16:44 | 프로젝트 일지 | 트랙백 | 덧글(1)

프로젝트 진행 상황 - Vector 까지 적용.


현재 까지 진행 상황은 위에 그림과 같다. 아직 파일클래스 부분을 예습 하지 못해서 불안한 감이 있긴 하지만

예습 보다는 복습과 응용에 중점을 두고 있기 때문에 그런 것 같다.

확실하게 숙지하고 있지 않으면 문법적인 오류가 발생을 해도 찾는데 너무 오래 걸리기 때문이다.

위에 그림은 벡터 까지 적용시킨 화면이다.

아래는 소스의 일부분이다.

if((i+1) == data.size()){
      for(;count<data.size();count++){
       if("수입".equals(((Item)list).getAccount())){
        sum += ((Item)list).getMoney();
       }
       else if("지출".equals(((Item)list).getAccount())){
        minus += ((Item)list).getMoney();
       }
      }
     }

위에 소스는 수입합계, 지출합계, 총계를 구하기 위해서 적용 시킨 소스이다.
위에 소스를 적용 시키면서 확실히 레퍼런스형 변수에 대해서는 어려움이 없을 것 같다.

오늘은 여기까지~

캄사합니다.

by 만성피로 | 2008/05/27 18:03 | 프로젝트 일지 | 트랙백 | 덧글(1)

하마치 - 네트워크 쪽으로 생각해보자.

조금 흥미를 자극하는 한가지를 소개 하려 합니다.
여기서 말하는 흥미란 네트워크 쪽에 관심이 있는 사람들이겠지요 ~

이번에 이야기 하고픈 잡담은 (Hamachi)하마치 프로그램입니다.

하마치라는 프로그램은 보통 게임을 즐기는 분들이 주로 사용을 하지요 ~

이유는 시리얼넘버가 필요한 정품게임을 불법으로 받아서
네트워크 플레이를 즐기고자 하는 분들이 주로 사용하지요 ~

그런데 이 녀석을 처음 봤을 때 
    "오호라 요런것도 있구나 ~ 세상은 참 내가 지나치거나 생각치 못한게 너무 많네."
라는 생각을 했지요 ~

그럼 다음 그림을 보고 소개 하지요 ~

위에 보시면 점으로 구분 된 4자리 숫자가 보이죠?
바로 IP 주소 입니다. 그것도 A 클래스 주소로 말입니다 ~

저건 남이 못쓰는 저의 고유 IP 주소이기도 하지요. 물론 공짜로 얻은 주소이구요 -_-;
얻는 방법은 간단합니다. 프로그램 설치 하고 가동 시키면 얻어지죠;

위에 그림은 얻은 IP 정보에 상세 내역입니다. 보면 DHPC 서버에게 주소를 임대 받은것이고
기본 서브넷은 255.0.0.0 이므로 5.0.0.0 ~ 5.255.255.255 까지의 유저가 존재하겠지요.

조금 흥미롭지요? ㅋㅋ 이것만이 아니라 프로그램 내에서 하나의 네트워크를 구성하고자 하면
방을 만들 듯이 하나의 그룹을 만들어 여러 사용자들을 접속 시키면 하나의 네트워크가 구성이 되버립니다.

소규모 LAN 구성과 비슷한것이죠. 신기하죠?

단점이 있다면 본인의 컴퓨터 보안이 허술하거나 공유가 된 것들이 존재 한다면 그 결과는 조금 참담 할수도 있어요~
공유가 되버리면 다른 유저가 마음대로 파일을 가져갈수 있기 때문이지요.

그럼 수다는 이만 줄이겠습니다.

캄사합니다 ^^;

by 만성피로 | 2008/05/25 00:55 | Etc | 트랙백 | 덧글(1)

◀ 이전 페이지          다음 페이지 ▶