N스크린하이브리드앱과정/JAVA

[5일차] JAVA : 객체지향 프로그래밍. 객체와 메서드 혼합. 실습

광천스러움 2013. 7. 19. 12:52

*객체지향 3단계

1) 객체 모델링 : 공통 데이터 구조와 기능을 추출

  (1) 속성(attribute) : 특징

  (2) 기능(behavior) : 행동

 

2) 클래스 정의

  (1) 멤버변수(member variable) = 필드(field) <- 데이터

  (2) 메소드(method) : 처리

 

3) 객체 생성과 사용

  (1) 인스턴스(instance) = 클래스 객체 = 객체

  -> 클래스라는 설계도를 가지고 현실세계에서 뭔가를 만들게 되는 것!

  (2) 인스턴스 생성은 new 연산자 사용!

 

 

 

*추상화

 - 클래스 => 나무 // 이 나무들의 공통점을 추출한 것(추상적인 개념).

 - 객체 => 사과나무, 배나무, 포도나무, 감나무 //실제 현실세계에 있는 것들

 - 사과나무의 속성 : 사과, 가지, 뿌리 등등

 

 

*클래스와 객체를 생성하고, 속성 지정 후 출력하기

은행과 관련된 클래스를 한번 생성해보자.

Account클래스를 따로 생성했다.

은행계좌 클래스 "Account".

은행계좌에 대한 속성인 계좌번호 "accountNo", 예금주명 "ownerName", 현재잔고 "balance"

로 이루어져 있다.

 

 

obj라는 객체를 생성했다.

이 객체로 계좌번호, 예금주명, 현재잔고의 값이 각각 저장되었다. 이 때 객체는 멤버변수로 사용된다.

다음으로 시스템아웃을 이용해 입력된 속성들을 출력한다. 같은 main()함수에서 멤버변수가 등록되었기 때문에 return값은 상관없다. 나중에 다루겠지만, 객체에서 메서드를 생성할 때 이 return값이 활용될 것이다.

 

 

위와 비슷한 방법으로, 이제는  따로 클래스 파일을 만들지 않고 Animal객체를 구성하였다.

동물이라는 클래스에 obj라는 객체(인스턴스)를 생성하고, {타입/이름/나이}로 속성을 나누었다.

 

 

이렇게 클래스의 기본 코딩이 완료되었다.

 

bin폴더에는 class파일이 저장되어 있다.

클래스파일이 java파일보다 하나 더 많은 이유는, Animal이라는 클래스가 따로 만들어졌기 때문이다.

 

src폴더에는 java파일이 저장되어있다.

 

 

* 사랑을 측정할 수 있다?! - 클래스에 메서드의 활용

사랑도 측정될 수 있다? 파트너에 대한 사랑 측정을 한번 시도해보자.

사랑 측정을 하려면, 객체 뿐만아니라 그 객체의 행위를 의미하는 메서드가 더해져야 한다.

 

따라서 위 그림을 분석하면, 총 3가지의 메소드를 만들었다.

1. metFirst(): loveValue라는 변수의 초기값을 설정하는 메소드.

2. plusLove(): 사랑이 커지는 행위. 사랑의 가치가 100이 넘을 경우, "우리 결혼해!"라는 문자열이 출

                    력된다.

3. minusLove(): 사랑이 감소되는 행위. 이와 같은 경우, 만약 사랑의 가치가 0보다 작은 마이너스로

                      가게되면 "우리 헤어져!"라는 문자열이 출력되도록 설정했다.

 

 

자, 메인함수를 분석해보자.

1. 먼저 love객체를 생성한 다음

2. metFirst함수를 호출하여 사랑의 가치를 0으로 초기화시킨다.

3. 파트너 김태희가 등장! 사랑의 가치가 50 올라갔다. plusLove(50)을 호출한다.

4. 사랑의 감소시키는 minusLove를 호출해본다.

5. 결과값이 50-30-30 = -10이므로, "우리 헤어져!" 가 출력된다.

6. plusLove의 호출로 -10+100+100 = 190이므로, "우리 결혼해!"가 출력된다.

 

 

*은행에서 입출금하기 - 메서드 활용

앞에서 만든 은행 클래스에 입출금 행위(메서드)를 추가하였다.

 - amount : 입/출금할 금액을 말한다.

 - deposit() : 입금 메서드

 - withdraw() : 출금 메서드

 

메인함수에서 obj객체를 생성하여 입출금을 실행해본다.

 - int cash = obj.withdraw(2000000); //200만원을 출금한 값이 cash변수에 저장된다.

 - obj.deposit(50000); //5만원이 입금되었다. 현재 잔고가 출력될 것이다.

 

 

*자동차의 스피드 조정하기 - "사랑의 가치"와 비슷

Car 클래스

 

main함수

 

s(ㅇ_ㅇ)/