관리 메뉴

나구리의 개발공부기록

자바의 정석 기초편 ch6 - 1 ~ 4[객체지향언어,클래스와 객체] 본문

유튜브 공부/JAVA의 정석 기초편(유튜브)

자바의 정석 기초편 ch6 - 1 ~ 4[객체지향언어,클래스와 객체]

소소한나구리 2023. 11. 14. 12:37

1) 객체지향 언어

(1) JAVA 탄생

  • 80년대초 빠른 변화를 못쫓아가서 소프트웨어발전 위기의 해결책으로 객체지향 언어를 도입 (절차적 -> 객체지향)
  • 과거에는 C언어,포트란,코볼 등의 언어가 쓰이고 있었으나 해당 언어들은 하드웨어의 발전속도를 따라가지 못했음
  • C언어에 객체지향을 더한 C++이 나왔음에도 언어 자체가 쉽게 접근할 수 있지는 않았음
  • 1996년에 C++에서 더 단순하고 조금 쉽지만 안전한 프로그래밍 모델을 제공하기위해 잘 쓰지않는 일부 기능을 제거하고 새로운 기능을 추가한 JAVA가 처음 공개됨(개발은 1995년에 완성)
  • 객체지향 언어는 절차적 언어에 비해 코드의 재사용성이 높고 유지보수가 용이, 코드 중복이 제거됨
    • 1967년에 최초의 객체지향 언어 시뮬라가 나오고 이후 스몰톡 등의 언어가 나왔으나 당시에는 하드웨어가 받쳐주지 못해서 자주 사용하지 못하고 있었음
  • 절차적 프로그래밍은 순서대로 실행되는 프로그래밍을 뜻함(C언어)
  • 객체지향 프로그래밍은 절차적인 프로그래밍에 객체지향개념(규칙)을 추가한 것

(2) 객체지향언어의 OOP (Object-Oriented Programming) 

  1. 캡슐화
  2. 상속
  3. 추상화
  4. 다형성 - 객체지향을 이해하는데 도움이 됨
  5. 정보은닉(자바의 정석 기초편 유튜브에는 빠져있어서 새로 추가함)

(3) 객체지향의 공부방향

  • 반복할수록 이해도가 올라가기 때문에 6장을 2~3번 반복 후 7장을 공부하는 것을 권장(7장은 다형성)
  • 객체지향개념(규칙)은 무조건 외워야 함 -> 모르면 프로그래밍이 불가능함
  • 자바 공부 후 진로 방향에 맞춰 JSP, Spring등으로 웹 프로그래밍을 실습하거나 안드로이드 앱을 실습하고 이후 디자인패턴 책이나 객체지향 개념서를 공부

2) 클래스와 객체

  • 클래스의 정의 : 객체를 정의해 놓은 것
  • 클래스의 용도 : 객체를 생성하는데 사용
  • 객체의 정의 : 실제로 존재하는 것. 사물 또는 개념
  • 객체의 용도 : 객체가 가지고있는 기능과 속성에 따라 다름
    • 클래스 : 제품설계도로 이해하면 되지만 실제 프로그래밍에서 단순 설계도 이상의 기능을 수행할 수 있음
    • 객체 : 현실세계의 제품으로 접근하여 이해하면되며 개념적으로 그렇다는거지 실제로는 가상의 객체임
  • 최초에는 군사학적의 목적으로 실제 세계의 객체들을 가상세계(소프트웨어)로 구현하기 위한 노력으로 시도되었음 (실제 세계의 개념을 소프트웨어로 추상화하는 과정)
  • 객체 = 속성(변수) + 기능(메서드)

 

Tv의 속성과 기능 소프트웨어화(TV클래스 생성)

 

(1) 객체와 인스턴스 (거의 같은말)

  • 객체 : 모든 인스턴스를 대표하는 일반적 용어
  • 인스턴스 : 특정 클래스로부터 생성된 객체 (예: TV인스턴스)
  • 클래스(설계도) -> 인스턴스화(제품생성) -> 인스턴스 = 객체(제품)

클래스(설계도) -> 객체(제품)

3) 정리

(1) 클래스가 왜 필요한가?

  • 객체를 생성하기 위해

(2) 객체가 왜 필요한가?

  • 객체를 사용하기 위해

(3) 객체를 사용한다는 것은?

  • 객체가 가진 속성(변수)과 기능(메서드)을 사용하려고

 

 

** 출처 : 남궁성의 정석코딩_자바의정석