검색결과 리스트
글
OOP: 객체지향 프로그래밍(Object Oriented Programming)
- 우리 일상에서이루어지고있는 업무를 객체(Object)를 사용해서 프로그래밍하는방법
- ex)
* 1. 실제 주차장관리 업무파악
* (객체를 도출하고 그객체들의 관계에의한 업무파악)
* 2. 프로그램으로 작성
* (1번에서 파악된업무를 메모리상에서 그대로구현)
*
* ex> 주차관리 프로그램
*
*
* - 객체(업무):실제이루어지고있는 업무(주차장)에서 보여지고구체화되어있는 사물(차)
*
* - 객체(프로그램):실제이루어지고있는 업무(주차장)에서 보여지고
* 구체화되어있는 사물을 메모리의 데이타로
* 표현한것(차의데이타)
OOP 의 원칙
1. 캡슐화
2. 상속성
3. 다형성(오버로딩,오바라이딩,객체형변환)
//------ Car.java ------
/*TIP:
* class 선언
* - 형식
* 접근제한자 class 클래스이름{
* - 접근제한자:public,protected,없는거
*
* }
* ex> public class Car{
* }
*
* -구성요소
* 1.멤버변수선언(속성)
* 접근제한자(public,proected,없는거,private) 타입 indentifier;
* ex> public String carName;
*
* 2.멤버메쏘드 선언(행위)
* 접근제한자 리턴타입 메쏘드이름(인자){
* -인자: 나를 호출한놈이 데이타를 넣어줄 통로
* -리턴타입: 나를 호출한놈에게 줄 데이타타입
* void --> 줄데이타가 없는경우
* }
* ex> public int test(int a){
*
* }
*/
/**
*
* 이 클래스는 Car 클래스이다.
* 차 번호와 입차, 출차시간, 요금을 받는다.
* @author : SUIN
* @version: ver0.1
*
*/
public class Car {
/**
* 차량의 번호
*/
public String no ;
public int inTime;
public int outTime;
/** 요금저장 */
public int fee;
}
//------ CarMain.java ------
public class CarMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//1. 차가 들어온다. (입차)
//변수선언 : 타입 식별자 -> Car 타입
//차 클래스 사용해서 차 객체 생성 후 Car 변수 초기화
//*Car 타입의 기억장소 c1이라는 식별자 할당,
//*Car 클래스(틀)을 활용해서 객체 생성
Car c1 = new Car(); //차 객체 찍기
//차 객체 안의 멤버변수 초기화
c1.no ="1234";
c1.inTime = 12;
c1.outTime = 0;
c1.fee = c1.outTime - c1.inTime;
//시간이 흐른 후 (2hr)
//2. 요금계산
c1.outTime = 14;
c1.fee = (c1.outTime - c1.inTime)*1000;
//3. 출력
System.out.println("****************");
System.out.println("차량번호: "+c1.no
+"\n입차시간: "+c1.inTime
+"\n출차시간: "+c1.outTime
+"\n주차요금: "+c1.fee+"원");
System.out.println("****************");
/*****************************************/
//String str;
Car c2 = new Car();
c2.no ="4962";
c2.inTime = 14;
c2.outTime = 0;
c2.fee = 0;
c2.outTime = 17;
c2.fee = (c2.outTime - c2.inTime)*1000;
System.out.println("****************");
System.out.println("차량번호: "+c2.no
+"\n입차시간: "+c2.inTime
+"\n출차시간: "+c2.outTime
+"\n주차요금: "+c2.fee+"원");
System.out.println("****************");
}
}
//------ CarMethod.java ------
/* class 선언
* - 형식
* 접근제한자 class 클래스이름{
* - 접근제한자:public,protected,없는거
*
* }
* ex> public class Car{
* }
*
* -구성요소
* 1.멤버변수선언(속성)
* 접근제한자(public,proected,없는거,private) 타입 indentifier;
* ex> public String carName;
*
* 2.멤버메쏘드 선언(행위)
* 접근제한자 리턴타입 메쏘드이름(인자){
* -인자: 나를 호출한놈(클래스,객체)이 데이타를 넣어줄 통로
* -리턴타입: 나를 호출한놈에게 줄 데이타타입
* void --> 줄데이타가 없는경우
* }
* ex> public int test(int a){
*
* }
*/
/**
* @author : SUIN
* @since 201302
*
*/
public class CarMethod {
/**
* 차량의 번호 : String 형태
*/
public String no ;
/**
* 입차시간
*/
public int inTime;
public int outTime;
public int fee;
public static int moneyPerHour = 1000;
/*
* 기능 (메서드)
* 1. 요금을 계산하다
* 2. 출력하다
*/
//요금 계산
/**
* 요금 계산 메소드
*/
public void calculateFee() {
this.fee = (this.outTime - this.inTime)*moneyPerHour;
//같은 클래스 안에서는 자기자신의 레퍼런스이므로 this. 해주면 됨.
//안해줘도 default 로 생략가능.(처음엔 생략하지 말 것)
// this = 셀프참조변수
}
//출력
/**
* 차량의 주차정보 출력 메소드
*/
public void print(){
System.out.println("****************");
System.out.println("차량번호: "+this.no
+"\n입차시간: "+inTime
+"\n출차시간: "+outTime
+"\n주차요금: "+fee+"원");
System.out.println("****************");
}
//초기화
/**
* 차량의 데이터를 SET
*
* @param no :차량 번호 입력
* @param inTime :입차시간
* @param outTime :출차시간
* @param fee :주차요금
*
*/
public void setData(String no, int inTime, int outTime, int fee){
this.setNo(no);
this.setInTime(inTime);
this.setOutTime(outTime);
this.setFee(fee);
}
/*
* 멤버필드 데이터 메소드(set, get)
* 1. setter method
* 2. getter method
*/
//setter method
public void setNo (String no){ //검정은 로컬변수
this.no = no; //파랑은 멤버(전역)변수
//
}
public void setInTime(int inTime){
this.inTime = inTime;
}
public void setOutTime(int outTime){
this.outTime = outTime;
}
public void setFee(int fee) {
this.fee = fee;
}
//getter method
/**
* 차량 번호를 반환하는 메소드
* @return
*/
public String getNo (){ //get : 다른 클래스(사용자) 입장에서 get
return this.no;
}
public int getInTime (){
return this.inTime;
}
public int getOutTime() {
return outTime;
}
public int getFee() {
return fee;
}
//Source - Generate getter and setter -> 자동으로 만들어줌. 대박!
}
//------ CarMethodMain.java ------
public class CarMethodMain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//1. 차가 들어온다. (입차)
//변수선언 : 타입 식별자 -> Car 타입
//차 클래스 사용해서 차 객체 생성 후 Car 변수 초기화
//*Car 타입의 기억장소 c1이라는 식별자 할당,
//*Car 클래스(틀)을 활용해서 객체 생성
CarMethod c1 = new CarMethod(); //차 객체 찍기
//차 객체 안의 멤버변수 초기화
c1.no ="3456";
c1.inTime = 12;
c1.outTime = 0;
c1.fee = 0;
//시간이 흐른 후 (2hr)
c1.outTime = 14;
//2. 요금계산
c1.outTime = 14;
c1.fee = (c1.outTime - c1.inTime)*1000;
//3. 출력
System.out.println("****************");
System.out.println("차량번호: "+c1.no
+"\n입차시간: "+c1.inTime
+"\n출차시간: "+c1.outTime
+"\n주차요금: "+c1.fee+"원");
System.out.println("****************");
/******************클래스에 메소드추가***************************/
CarMethod c2 = new CarMethod(); //번지수 입력, this = c2의 주소
c2.no ="1212";
c2.inTime = 13;
c2.outTime = 0;
c2.fee = 0;
c2.outTime = 17;
c2.calculateFee(); //요금 계산 함수
c2.print(); //요금 출력 -> 우와 편해졌다!
/********************getter,setter*************************/
CarMethod c3 = new CarMethod();
//데이터에 관련된 메소드. setter method, getter method
//1. 입차
c3.setData("1234", 16, 0, 0);
//2. 시간이 흐른 후
c3.setOutTime(17);
c3.calculateFee();
//3. 출력
c3.print();
//*.번호 알아보기
String no = c3.getNo();
System.out.println("no="+no);
/*
* Car 클래스를 사용하는 사용자에게
* Car 클래스의 멤버에 대해 설명하지 않아도 됨.
* 메소드만 설명하면 되고, 사용자가 멤버변수를 몰라도 됨.
*
* => 다른 클래스, 객체의 멤버변수 접근을 막는다.
*/
//시간당 요금 출력
System.out.println("시간당 요금: "+CarMethod.moneyPerHour);
}
}
//------ MemberField.java ------
public class MemberField {
//선언과 동시에 초기화 가능
/*
* 객체 생성 후 멤버변수의 초기 기본값
*
* 참조변수 (클래스변수, 객체변수) : null
* integer : 0
* boolean : false
* double :0.0
*
*/
public String member1 = "멤버변수연습";
public int member2 = 130222;
public char member3 ;
public boolean member4 ;
public float member5 ;
}
//------ MemberFieldMain.java ------
public class MemberFieldMain {
public static void main(String[] args) {
/*선언*/
MemberField mf;
//MemberField.class가 존재해야 레퍼런스 변수 선언 가능
//선언하면 멤버필드 템플릿이 메모리 위로 올라옴.
//mf = MemberField 객체의 주소값을 가짐
/*초기화*/
mf = new MemberField();
// 보통 선언과 동시에 초기화 MemberField mf = new MemberField();
/*
* << 멤버(객체)변수 접근 방법 >>
*
* - 참조변수.멤버변수의 식별자
*
* ex> Student st = new Student();
* st.no = 1234;
*
*/
mf.member1 ="문자열";
mf.member3='c';
mf.member5=3.14159f;
System.out.println(mf.member1);
System.out.println(mf.member2);
System.out.println(mf.member3);
System.out.println(mf.member4);
System.out.println(mf.member5);
//tip: Ctrl+마우스 왼클릭 = 해당 변수가 정의 된 곳으로 이동
//tip: Ctrl+Alt+↓,↑ = 해당 드래그 된 내용 복사 붙여넣기
}
}
//------ MemberMethod.java ------
/*
* -구성요소
* 1.멤버변수선언(속성)
* 접근제한자(public,protected,없는거,private) 타입 indentifier;
* ex> public String carName;
*
* 2.멤버메쏘드 선언(행위)
* 접근제한자 리턴타입 메쏘드이름(인자){
* -인자: 나를 호출한놈이 데이타를 넣어줄 통로
* -리턴타입: 나를 호출한놈에게 줄 데이타타입
* void --> 줄데이타가 없는경우
* }
* ex> public int test(int a){
*
* }
*
* //리턴타입과 메쏘드이름 사이는 떨어지면 안된다.
*/
public class MemberMethod {
public void method1 () {
System.out.println("method1()실행");
}
public void method2 (int a){
System.out.println("method2(int a)실행: "+a);
}
public void method3(int a, int b){
System.out.println("method3(int a, int b)실행: "+a+","+b);
}
public int method4 (int a){
a = a+1;
System.out.print("mothod4(int a)실행: ");
return a;
}
public int method5 (int a, int b){
int result = a+b ;
System.out.print("mothod5(int a, int b)실행: ");
return result;
}
}
//------ MemberMethodMain.java ------
public class MemberMethodMain {
public static void main(String[] args) {
MemberMethod mm = new MemberMethod();
/*
* 멤버(객체)메쏘드에 접근하는방법
*
* -형태: 참조(객체)변수.메쏘드이름();
* ex> mm.method1();
*/
mm.method1();
mm.method2(3);
mm.method3(1, 2);
int result = mm.method4(999);
System.out.println(result);
/*
* public int method5(int x, int y);
*/
result = mm.method5(34, 34457833);
System.out.println(result);
}
}
'JAVA > 자바실습' 카테고리의 다른 글
| [JAVA] OOP 다형성 - 오버로딩 (0) | 2013.06.12 |
|---|---|
| [JAVA] OOP Encapsulation 캡슐화 (0) | 2013.06.12 |
| [JAVA] 자바기본2: For, While 문을 이용한 구구단, 별 찍기, 알파벳 출력 등 (0) | 2013.06.12 |
| [JAVA] 자바기본1: 연산자, 형변환, 문자열 출력, if문, 윤년출력 (0) | 2013.06.11 |
RECENT COMMENT