객체지향언어(OOP, object-oriented programming)

sim·2023년 3월 7일

자바의 정석

목록 보기
14/20
  1. 객체지향 언어 = 프로그래밍 언어 + 객체지향개념(규칙)규칙 외우세요!
  • 코드의 재사용성이 높고 유지보수가 용이
  • 중복 코드 제거

** 핵심 개념 캡상추다.
1) 캡슐화
2) 상속
3) 추상화
4) 다형성

  1. 클래스와 객체
  • 클래스의 정의 : 클래스란 객체를 정의해 놓은 것
  • 클래스의 용도 : 클래스는 객체를 생성하는데 사용
  • 객체의 정의 : 실제로 존재하는 것. 사물 또는 개념
  • 객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름
  1. 객체의 구성요소 - 속성(변수)과 기능(메서드)
  • 객체는 속성과 기능의 집합. 속성과 기능은 그 객체의 멤버.
  • 속성(property) : 멤버변수(variable)
  • 기능(function) : 메서드(method)
  1. 객체와 인스턴스
  • 객체 : 모든 인스턴스를 대표하는 일반적 용어 (포괄적인 의미)
  • 인스턴스 : 특정 클래스로부터 생성된 객체 (어떤 클래스로부터 만들어진 것인지를 보다 강조하는 의미)
  • 거의 비슷한 의미.

클래스-설계도/ 객체-제품 tv/ 속성-변수, 기능-메서드
Q. 클래스가 왜 필요한가?
A. 객체를 생성하기 위해

Q. 객체가 왜 필요한가?
A. 객체를 사용하기 위해

Q. 객체를 사용한다는 것은?
A. 객체가 가진 속성과 기능을 사용하려고

  1. 한 파일에 여러 클래스 작성하기
    1) 올바른 작성 예
  • public class가 있는 경우, 소스파일의 이름은 반드시 public class의 이름과 일치해야함.
    ex.

    Hello2.java
    public class Hello2 {}
    	   class Hello3 {}
           
  • public class가 없는 경우, 소스파일의 이름은 둘다 가능.
    ex.

    Hello2.java // Hello3.java // 둘다 가능.
    class Hello2 {}
    class Hello3 {}

2) 잘못된 작성 예

  • 하나의 소스파일에 둘 이상의 public class가 존재하면 안됨. --> 각 클래스를 별도의 소스파일에 나눠서 저장하던가, 둘 중의 한 클래스에 public 빼기
    ex.

    Hello2.java
    public class Hello2 {}
    public class Hello3 {}
  • 소스파일의 이름이 public class의 이름과 일치해야함. 대소문자까지 일치해야 함.--> 소스파일 이름을 'Hello2.java'로 변경
    ex.

    Hello3.java
    public class Hello2 {}
    	   class Hello3 {}
    
    hello2.java
    public class Hello2 {}
        
  1. 객체의 생성과 사용
    1) 객체의 생성
    클래스명 변수명; //클래스의 객체를 참조하기 위한 참조변수를 선언
    변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장

    Tv t; // Tv클래스 타입의 참조변수 t를 선언
    t = new Tv(); // Tv인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 t에 저장

    2) 객체의 사용

    t.channel1 = 7; // Tv인스턴스의 멤버변수 channel의 값을 7로한다.
    t.channelDown(); // Tv인스턴스의 메서드 channelDown()을 호출.
    System.out.println("현재 채널은 "+t.channel+ " 입니다.");
  • 인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.
  • 하나의 인스턴스를 여러 개의 참조변수가 가리키는 것은 가능하지만, 여러 인스턴스를 하나의 참조변수가 가리키는 것은 불가능!
  1. 객체 배열
  • 객체 배열 == 참조변수 배열

ex.
Tv tv1, tv2, tv3; -->

Tv[] tvArr = new Tv[3]; // 길이가 3인 Tv타입의 참조변수 배열 생성
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv(); // 객체를 생성해서 배열의 각 요소에 저장

--> 간단하게 초기화 블럭 사용

Tv[] tvArr = { new Tv(), new Tv(), new Tv()};

--> 객체수가 많을 때는 for문 사용

Tv[] tvArr = new Tv[100];

for (int i=0; i<tvArr.length; i++) {
	tvArr[i] = new Tv();
}
profile
sim

0개의 댓글