객체지향 프로그래밍(oop)

: 데이터를 객체로 취급하여 프로그램에 반영한 것으로 캡슐화, 다형성, 추상화, 상속 등의 특징을 이용하여

코드의 재사용성을 증가시키고, 유지보수를 감소시킨다는 장점이 있다

 

클래스

: 객체를 정의해 놓은 것으로 객체를 만들기 위한 설계도 

: 클래스를 구성하는 변수와 메소드를 각각 멤버 변수, 멤버 메소드라고 한다

-main()을 가진 클래스: 실행목적-main()이 없는 클래스: 설계목적

 

메소드

클래스의 기본 구성 요소로 어떤 기능을 가진 최소한의 작업단위(ex) 계산목적, 데이터 저장목적 ,,,)

 

객체(=인스턴스)

: 클래스로부터 객체가 만들어지는 과정을 인스턴스화라고 말하며,

변수, 메소드 등의 기능을 모두 포함한 개념

 

추상화

: 새로운 자료형을 저장할 목적으로 만들어진 클래스(=설계도)

: 현실의 객체가 갖는 속성과 기능은 추상화 과정을 거쳐 클래스로 정의된다, 클래스는 구체화 과정을 거쳐 

객체(=인스턴스)가 된다

 


객체 생성

형식) 클래스명 객체변수명 = new 클래스명();

// 객체를 저장할 수 있는 공간 만들기

Car morning; //Car 클래스 객체 선언(morning 변수명으로 접근)
morning = new Car(); //객체 생성
System.out.println("morning=>"+morning);
//morning=>j210105.Car@15db9742
//객체의 주소값이 출력된다 

 

메소드 사용 이유?

1. 편리성 추구=> 재사용성, 라인수가 줄어든다

2. 코딩이 줄어드는 효과=> 개발시간 단축(비용 절감)

3. 모듈화

 

 

예시) TV.java  TVHandling.java

package j210105;

public class TV {
	//1.tv 정보
	String maker;
	String name;
	String color;
	int size; //인치
	boolean power=false;//전원상태
	int channel;//0
	
	//2.tv 기능 
	//1)리모콘의 전원 on -> 매개변수x,반환값x
	void turnOn() {
		power=!power;//power=true;
		System.out.println("로딩중..TV전원 On!! ");
	}
	
	//2)리모콘의 전원 off 
	void turnOff() {
		power=!power;//power=false;
		System.out.println("TV전원 off");
	}
	
	//3)채널 up-> 변경 -> 매개변수o,반환값x 
	void channelUp(int ch) {
		channel=ch;
		System.out.println("현재 변경된 채널은=>"+channel);
	}
	
	//4)채널 down
	void channelDown(int ch) {
		channel=ch;
		System.out.println("현재 변경된 채널은=>"+channel);
	}
	//-> 여기서 ch는 매개변수 이므로 여러 메서드에서 같은 변수명으로 불러도됨
	//메소드 호출시 생성되고 메소드 끝나면 소멸되므로(로컬변수)
	
	//5)tv 채널정보 
	void tvDisplay() {
		System.out.println("===TV정보 출력===");
		System.out.println("모델명=>"+name);
		System.out.println("색상=>"+color);
		System.out.println("현재채널=>"+channel);
		System.out.println("전원상태=>"+power);
	}

	//6)말하면 채널변경 기능-> 매개변수o, 반환값x-> 말(string)
	void speakChannel(String ch) {
		if(ch.contentEquals("ocn")) {
			channel=35;
		}else if(ch.contentEquals("sports")) {
			channel=121;
		}
		System.out.println("현재 채널은"+channel+"로 이동중입니다.");
	}
}

 

package j210105;

public class TVHandling {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//TV클래스 -> 객체 생성
		TV smartTV = new TV();
		smartTV.name="삼성smartTV";
		smartTV.maker="삼성"; //객체명.멤버변수=값
		smartTV.color="검정색";
		smartTV.size=50;
		
		//기능테스트
		smartTV.turnOn();
		smartTV.channelUp(23);//channelUp 메소드 호출하면서 23매개변수 전달
		smartTV.channelDown(12);
		smartTV.speakChannel("ocn");
		
		//채널정보 출력
		smartTV.tvDisplay();
	}
}
/*
로딩중..TV전원 On!! 
현재 변경된 채널은=>23
현재 변경된 채널은=>12
현재 채널은35로 이동중입니다.
===TV정보 출력===
모델명=>삼성smartTV
색상=>검정색
현재채널=>35
전원상태=>true
*/

 


 

equals()  vs  contentEquals()

s.equals()

> s 변수와 매개변수의 문자열 비교(string객체일 경우만 가능)

> string 객체 끼리의 문자열을 비교하여 같으면 true를 반환하는 메소드

 

s.contentEquals()

> s 변수와 매개변수의 문자열 비교 (StringBuffer / StringBuilder / Char Array 상관없음)

> String 객체와 다른 객체의 문자열을 비교하여 동일하면 true를 반환하는 메소드

 

 

 

+ Recent posts