문장들을 묶어놓은 것.

-작업단위로 문장들을 묶어서 이름 붙인 것

-값(입력)을 받아서 처리하고, 결과를 반환(출력)

 

 

함수와 메서드의 차이?

 

메서드는 클래스 안에 들어있어야함

함수는 클래스에 독립적임

 

 

 

장점

1. 코드 중복 줄이기

2. 코드 관리 용이

3. 코드 재사용 가능

4. 코드 가독성 증가

 

 

반복적으로 수행되는 여러문장을 메서드로 작성하자

하나의 메서드는 한 가지 기능만 수행하도록 작성하자 -> 유지보수가 용이.

 

메서드는 선언부 + 구현부

 

반환타입 메서드이름 (타입 변수명, 타입 변수명, ...) -> 선언부

{

     //메서드 호출시 수행될 코드         -> 구현부

}

'JAVA > 객체지향, 클래스' 카테고리의 다른 글

매개변수  (0) 2022.07.25
호출 스택 (call stack)  (0) 2022.07.25
선언위치에 따른 변수(타입)의 종류  (0) 2022.07.22
객체의 생성과 사용 - 예제  (0) 2022.07.14
객체의 생성과 사용  (0) 2022.07.14

변수의 종류 3가지

1.  iv  생성시기 : 인스턴스(일단 이해 객체 ==  iv를 묶어놓은 것)가 생성되었을 때 (제일 중요)

객체생성 필요

2. cv  생성시기 : 클래스(설계도)가 메모리에 올라갈 때 (필요할 때) 

-> 객체생성 안해도 된다 안해도 사용 가능.

3. lv 생성시기 : 변수 선언문이 수행되었을 때 

 

 

영역

1. 클래스 영역 - iv(instance variable),cv(static +iv). 

클래스 영역의 범위 -> 클래스 시작부터 끝까지

클래스 영역은 선언문만 가능하다.

 

2. 메서드 영역 - lv(local variable,지역변수)

메서드 영역의 범위 -> 메서드 시작부터 끝까지

 

//선언 위치에 따라 3가지로 나뉜다.


class Variables	// 클래스 영역 클래스 시작
{
	int iv;	// 	인스턴스 변수
    static int cv;	// 클래스 변수(static 변수, 공유변수)
    
	
	void method()		//메서드 영역 메서드 시작
    {
	
		int lv = 0; // 지역변수
	
	
	} 메서드 끝

} // 클래스 끝

'JAVA > 객체지향, 클래스' 카테고리의 다른 글

호출 스택 (call stack)  (0) 2022.07.25
메서드란?  (0) 2022.07.25
객체의 생성과 사용 - 예제  (0) 2022.07.14
객체의 생성과 사용  (0) 2022.07.14
하나의 소스파일에 여러 클래스 작성  (0) 2022.07.14

객체 배열 ==  참조변수 배열

Tv tv1, tv2, tv3;

// -> 배열로 바꾸면
Tv[] tvArr = new Tv[3];

참조변수의 기본값을 NULL

 

객체를 생성해서 배열의 각 요소에 저장한다.

 

객체의 배열을 만들었다고 해서 그 안에 객체가 자동으로 들어가는게 아니기에 하나하나 넣어줘야 함

Tv[] tvArr = new Tv[3];
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();

 

'JAVA > 배열' 카테고리의 다른 글

Arrays 클래스로 배열 다루기  (0) 2022.07.13
String 배열, 클래스  (0) 2022.07.13
배열의 출력  (0) 2022.07.11
배열의 길이,초기화  (0) 2022.07.11
배열  (0) 2022.07.11

 

Tv t1 = new Tv();
Tv t2 = new Tv();

//t1과 t2가 가리키는 객체는 각각 다른 객체임

각각의 참조변수의 저장된 객체의 주소는 다르다.

만약 t2 = t1;을 입력한다면?

 

-> t1과 t2는 같은 객체를 가리킨다 

-> t2과 원래 가리키던 객체는 사용불가하다. -> GC (가비지 컬렉터)가 메모리를 확인하고 제거해줌(낭비 방지)

 

 

즉 하나의 인스턴스를 여러 개의 참조변수가 가리킬 수 있다.

그러나 여러 인스턴스를 하나의 참조변수가 가리킬 수 없다.

(변수는 하나의 값만 저장 가능하기 때문)

'JAVA > 객체지향, 클래스' 카테고리의 다른 글

메서드란?  (0) 2022.07.25
선언위치에 따른 변수(타입)의 종류  (0) 2022.07.22
객체의 생성과 사용  (0) 2022.07.14
하나의 소스파일에 여러 클래스 작성  (0) 2022.07.14
클래스와 객체  (0) 2022.07.13

1. 객체의 생성

클래스명 변수명;    .  //클래스의 객체를 참조하기 위한 참조변수를 선언

변수명 = new 클래스명();  클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장

 

Tv t;     // Tv클래스 타입의 참조변수 t를 선언

t = new Tv();  // Tv인스턴스를 생성한 후, 생성된 Tv 인스턴스의 주소를 t에 저장

 

Tv t = new Tv(); //📺

(리모컨) =(연결) (객체)

 

2. 객체의 사용

-> 객체가 가지고 있는 변수,메서드를 사용하기

 

t.channel = 7;    // Tv 인스턴스의 멤버변수 chanel 의 값을 7로 한다.

t.channelDown();   // Tv인스턴스의 메서드 channelDown()을 호출한다.

 

 

1. 클래스 작성(설계도 작성)

2. 객체생성(제품)

3.객체 사용(변수와 메서드 사용)

 

 

 

 

 

 

 

올바른 작성의 예

//소스파일 이름 Hello2.java

puvlic class Hello2{}
	   class Hello3{}
       
//기본적으로 소스파일 이름은 public class의 이름과 일치해야한다.


class Hello2{}
class Hello3{}

//public class가 하나도 없는 경우, 소스파일의 이름은 'Hello2.java', 'Hello3.java' 둘 다 가능

 

잘못된 작성의 예

 

//소스파일 이름 Hello2.java

public class Hello2{}
public class Hello3{}

//하나의 소스파일에 둘 이상의 public class가 존재하면 안됨.
//각 클래스를 별도의 소스파일에 나눠서 저장, 또는 둘 중의 한 클래스에 public을 붙이지 않는다.


//소스파일 이름 Hello3.java
public class Hello2{}
	   class Hello3{}
// 소스 파일의 이름이 pulic class의 이름과 일치하지 않는다. 소스파일의 이름과 public class의 이름을 일치시켜야 함

//소스파일 이름 hello2.java
public class Hello2 {}
	   class Hello3 {}
       
//대소문자를 구분하므로 대소문자까지 일치해야한다.

 

소스파일의 이름과 메인메서드가 들어있는 클래스의 이름이 일치하는지 확인하자!!

'JAVA > 객체지향, 클래스' 카테고리의 다른 글

선언위치에 따른 변수(타입)의 종류  (0) 2022.07.22
객체의 생성과 사용 - 예제  (0) 2022.07.14
객체의 생성과 사용  (0) 2022.07.14
클래스와 객체  (0) 2022.07.13
객체지향 언어  (0) 2022.07.13

클래스의 정의?

-> 클래스란 객체를 정의해 놓은 것

 

클래스의 용도?

-> 클래스는 객체를 생성하는데 사용

 

객체의 정의?

->실제로 존재하는 것, 사물 또는 개념

 

객체의 용도?

->객체가 가지고 있는 기능과 속성에 따라 다름

 

클래스 객 체
제품 설계도 제품
TV 설계도  TV
붕어빵 기계 붕어빵

 

이로 인해 알 수 있는 것

-> 클래스는 하나의 틀이다.

 

틀을 이용하여 물건을 찍어내는 것

 

 

 

객체의 구성요소

 

속성과 기능

 

객체 = 속성(변수) + 기능(메서드)

 

속성 -> 크기,길이,높이,색상,볼륨,채널 등   -> 변수

기능 -> 켜기,끄기,볼륨 높이기, 볼륨 낮추기, 채널 변경하기 등  -> 기능

 

//Ex 

class Tv{
	
    //변수
	
    String color; // 색상
    boolean power; // 전원상태
    int channel; //채널
	
	// 메서드
	
	void power()		{	power != power ;}
	void channelUp()	{	channel++;	}
    void channelDown()	(	channel--;	}
	
}

 

//클래스 -> 설계도

 

 

객체와 인스턴스

 

객체 : 모든 인스턴스를 대표하는 일반적 용어

인스턴스: 특정 클래스로부터 생성된 객체 (예: TV 인스턴스)

 

                인스턴스화

클래스 ----------------------> 인스턴스(객체)

 

 

 

클래스가 왜 필요할까?

 

(클래스는 객체의 설계도)

->클래스가 있으면 객체 생성 가능

 

객체가 왜 필요할까?(제품)

->객체를 사용하기 위해 

 

객체를 사용한다는 것?

->객체가 가진 속성과 기능을 사용하려고

 

객체-> 제품

속성 -> 변수

기능 -> 메서드

 

 

객체지향 언어 -> 프로그래밍 언어 + 객체지향개념(규칙) (규칙을 외워야 함)

 

 

80년대 초 소프트웨어의 위기 -> 왜?? 빠른 변화를 못쫓아가고 대처가 힘듬

 

해결책으로 객체지향 언어를 도입(절차적->객체지향)

 

해결책이 된 이유?

코드의 재사용성이 높다, 유지보수가 용이하다, 중복되는 코드를 제거 가능하다.

 

객체지향 언어의 핵심 특징 4가지 oop(object-oriented-programming)

 

//캡상추다

1.캡슐화

 

2.상속

 

3.추상화

 

4.다형성

 

 

 

6장,7장 (다형성 까지) 반복 규칙 정리후 암기 

객체지향의 개념의 이해가 중요하다

 

설계를 잘하려면 ->? 시행착오를 겪으면서 코딩을 해보는 경험이 중요

 

// ->기초편 -> 자바의 정석(3판) 이후 스프링(실습 위주로 가보자)

+ Recent posts