HAyooni
YOON
HAyooni
전체 방문자
오늘
어제
  • 분류 전체보기 (70)
    • Oracle DB (12)
      • ERD (0)
      • orcle sql (12)
    • front-end (8)
      • HTML (3)
      • CSS (5)
      • Javascript (0)
    • back-end (24)
      • JAVA (15)
      • JDBC (4)
      • Servlet + jsp (1)
      • myBatis (0)
      • Spring framework (4)
    • ERROR (8)
      • error note (8)
    • 과제 (0)
      • 문제풀이 (0)
    • 알고리즘 문제 (6)
      • programmers (6)
    • 자격증 (0)
      • 정보처리기사 (0)
    • 프로젝트 (12)
      • team-project (12)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • CSS
  • SQL
  • HTML기본
  • css선택자
  • project
  • 하샤드수
  • IAMPORT
  • oracle
  • jdbc
  • HTML
  • java
  • 직사각형별찍기
  • 알고리즘
  • spring
  • 결제환불시스템
  • 프로그래머스
  • FinalProject
  • 자바
  • db
  • dowhile

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
HAyooni

YOON

[수업-java] 08. 객체
back-end/JAVA

[수업-java] 08. 객체

2022. 8. 6. 17:53

1. 객체지향언어

객체와 객체 사이에 이루어지는 상호작용을 컴퓨터로 옮겨 만든 것을 객체지향프로그래밍이라고 한다.

객체 : 클래스에 정의 된 내용을 토대로 heap 메모리 영역에 생성된 것

클래스 - 캡슐화 :외부에 데이터가 안보이도록(은닉화 후) 기능(method)을 집어넣은 것

​

유연성을 갖추기 위해 추상화를 통해서 클래스를 만들고 그 클래스를 통해 객체를 만든다.

​

⑴ 캡슐화의 원칙

1. 클래스의 멤버 변수에 대한 접근 권한은 private를 원칙으로 한다.

2. 클래스 멤버 변수에 대한 연산처리를 목적으로 하는 함수들을 클래스 내부에 작성한다.

3. 멤버 함수는 클래스 밖에서 접근할 수 있도록 public으로 설정한다.

​

​

1) 클래스

 

캡슐화를 통해 만들어진 것 / 클래스를 인스턴스(객체)로 만드는 것을 인스턴스화라고 정의함 / 클래스에 정의된 대로 heap 메모리 영역에 생성된겻 = 객체

public(접근 제한자/생략가능) - 예약어(생략가능) - class - 클래스명 {

속성 값 설정 부분 - 필드

기능 정의 부분 - method

}

 

 (1) 접근제한자 종류

 

+ public *전체 (같은 패키지, 다른 패키지 모두 접근 가능 )

~ (default) *생략 (같은 패키지 안에서만 접근 가능)​

 # protected  (default와 비슷하지만 상속된 클래스의 경우에는 접근이 가능함)

- private (캡슐화를 위해서 사용함) *해당 클래스

 

​
해당 클래스 내부
같은 패키지
다른 패키지
+ public
O
O
O
# protected
O
O
O (후손 클래스 한정)
~(default)
O
O
X
- private
O
X
X

 

 

 

2)  package / import

 

⑴ 서로 관련된 클래스 혹은 인터페이스의 묶음으로 폴더와 비슷 패키지는 서브 패키지를 가질 수 있으며 ‘ . ’으로 구분된다.

패키지가 선언되지 않은 클래스는 자동적으로 이름없는 패키지(default)에 속하게 됨

​

⑵ import 내가 사용한 클래스가 어떤 위치에 있는지 알려주기 위해 사용한다.

즉, 외부 패키지에 있는 경우 import 해오는 것이다.

(예외) java.lang 안에 있는 클래스는 import 없이도 사용이 가능하다.

​

 

 

3) 필드 (멤버 변수) < 속성값을 설정하는 부분 >

​

⑴ static : 여러 객체가 공유해서 쓸 목적으로 사용한다. - > static 메모리 영역에 할당

static이 붙은 변수 static변수 = 클래스 변수 (프로그램 시작부터 프로그램 끝날 때까지 유지 그러므로 객체를 만들어줄 필요가 없다.)

static이 붙지 않는 변수 인스턴스 변수(객체가 생성되어야만 생성 , 객체가 끝나면 heap 메모리 영역에서 사라진다)

밑줄이 그어져 있는 경우에는 static 선언

​

⑵ final : 종단(마지막)이라는 의미를 갖는다. 변수명이 모두 대문자로 쓰여있는 경우 final 선언

​

초기화

ㄴ 밑줄의 경우에는 static 선언한다

​

4) 생성자

 

⑴ 메소드의 일종으로 heap 메모리 영역에 할당된 객체의 필드를 초기화시키는 역할을 한다.

접근제한자 생성자명( 매개변수 )

접근제한자와 매개변수는 생략 가능

​

ex) Member m = new Member(); < 해당 부분

(new - heap 메모리 영역에 공간을 생성하고 주소 값을 할당시키는 역할)

()는 매개 변수를 지정하는 역할

​

⑵ 생성자의 규칙

- 생성자의 이름은 클래스명과 동일하게 지어야한다.

- 반환타입이 존재하지 않는다.

​

⑶ 생성자의 종류

매개변수의 유무에 따라 종류를 나누게 된다.

- 기본 생성자 : 작성하지 않아도 된다. 작성하지 않으면 JVM이 자동으로 생성한다.

- 매개변수가 있는 생성자 : 매개변수를 통해 전달받은 값으로 필드를 초기화

기본생성자를 만들어주지 않고 매개변수 있는 생성자 만들어줬을경우 기본 성생자는 자동으로 생성되지 않는다.

 

 

 

5) method

 

⑴ 메소드의 구조

public static void main(String[] ags) { }

public - 접근제한자 생략가능

static - 예약어 생략가능

void - 반환타입 생략불가 / 기본자료형을 적어준다. void 라고 적혀있는 경우,"반환 값이 없다"는 것을 의미

main - 메소드명 생략불가

String[] ags - 매개변수 생략가능

​

⑵ void

void : 반환 값 없음

기본 자료형 : Integer.parseInt() / String.charAt()/equals()/length(), Math.random(),,,

​

배열 : Arrays.copyOf < 얕은 복사 >

클래스 : Scanner.nextLine()/next()

ㄴ 주소값 반환

​

⑶ 매개변수

매개변수가 없음 = 전달할 값이 없음

기본 자료형

배열

클래스 - 배열과 클래스 둘다 주소값 호출

가변인자 : 매개변수 개수 유동적 ex)printf() : 자료형...변수명

​

- 매개변수의 유무와 반환 값 유무에 따른 구분 - 

 

예1 ) 반환타입이 있고 매개변수도 있는 메소드

public void method1() { 
	System.out.println("매개 변수와 반환 값 둘다 없는 메소드입니다.");
 }

예2 ) 반환타입은 있고 매개변수는 없는 메소드

public int method2() { 
//this method must return a result of type int 
	int num1 =10; int num2 = 3; 
    // int sum = num1 + num2; 
    // return num1 + num2; 
    // return 10 +3 ; 
    return 13; 
}

예3 ) 반환타입은 없고 매개변수는 있는 메소드

public void method3(int num1, int num2) { 
	System.out.println(num1 + ", " +num2); 
}

예4 ) 반환타입도 없고 매개변수도 없는 메소드

public int method4(int num1, int num2) { 
	return num1+num2;
}

 

1. 오버로딩

한 클래스 내에서 같은 이름의 메소드를 여러 개 작성할 수 있도록 하는 기법 (생성자에도 적용이 가능함.)

1) 같은 이름의 메소드

2) 매개변수의 타입 or 개수 or 순서가 달라야함.

ㄴ 즉, 반환 타입, 접근제한자에 따른 영향은 미치지 않는다.

​

(1) . 지역변수와 필드의 이름이 같은 경우에는 필드보다 지역변수가 우선시된다.

​

(2). this 레퍼런스 변수(참조변수)의 사용

- 내 주소 값을 갖고있는 레퍼런스

- 객체 자신을 나타내는 변수

 

(3)  this() 라는 생성자를 통해서 치환

- 같은 클래스에 있는 생성자 호출

- 사용할 때는 무조건 첫줄에다가 작성하는 것이 원칙

private String title; 
private String publisher; 
private String author; 
private int price; 
private double discountRate; 

public Book() { } 

public Book(String title, String publisher, String author) { 
	this.title = title; 
    this.publisher = publisher; 
    this.author = author; 
} 

public Book(String title, String publisher, String author, int price, double discountRate) { 
	this(title, publisher, author); 
    this.price = price; 
    this.discountRate = discountRate; 
}

 

 (4). 다른 값을 가져오기로 할 때는 Set 을 이용함

​

**수업 들었을 때 헷갈렸던 점

위에서 먼저 this 레퍼런스 변수로 선언한 후에 this() 생성자를 이용하여 묶어야 한다는 점 !

​

 

2. MVC 패턴 ( Model View Controller)

​

Model 데이터 관련 vo 데이터 임시 저장공간

dao(service) 외부 데이터 저장 공간과 연결(file, db 등)

View 화면(consloe, 브라우저)

Controller M-V 다리역할 넘겨받은 데이터 가공 출력할 View 결정

​

​

3. 객체배열

​

객체를 담는 배열

선언 : 클래스명[] 배열명; / 클래스명 배열명[];

할당 : 배열명 = new 클래스명[]

선언&할당 : 클래스명[] 배열명 = new 클래스명[크기];

초기화 : 배열명[인덱스] = new 클래스명();

배열들이 참조형 객체를 담아놓는 참조형 변수가 되었다

​

예) 초기화

iArr = {new Trainee(), new Trainee()} ;

​

 
 
저작자표시 (새창열림)

'back-end > JAVA' 카테고리의 다른 글

[수업-java] 10. API  (0) 2022.08.06
[수업-java] 09. 상속  (0) 2022.08.06
[수업-java] 07. 배열  (0) 2022.08.06
[수업-Java] 06. (제어문) 분기문  (0) 2022.08.06
[수업-Java] 05. (제어문) 반복문  (0) 2022.08.06
    'back-end/JAVA' 카테고리의 다른 글
    • [수업-java] 10. API
    • [수업-java] 09. 상속
    • [수업-java] 07. 배열
    • [수업-Java] 06. (제어문) 분기문
    HAyooni
    HAyooni
    코린이의 티스토리 탐색기 기존 블로그(https://blog.naver.com/hha6571)에서 이사중입니다.

    티스토리툴바