역사를 이해하고 간다면 먼저 편할꺼 같다.
Java 란 C언어 + 객체 지향을 입힌 단어이다.
즉, OOP(Object Oriented Programming) 객체 지향 프로그래밍 이란 모든 데이터를 현실에 빗대어 객체로 다루는 프로그래밍 기법이다.
데이터의 세부 내용이 객체 은닉된다. 즉, 데이터 변경으로 인한 에러가 줄어들고, 객체들간에 데이터를 자세히 알 필요가 없으므로 코드가 단순해진다.
객체와 함수의 재사용이 쉽다.
각 객체간의 수정이 다른 객체에 미치는 영향을 최소화 한다.
외부 객체의 직접 접근을 막아 프로젝트 확장 시 오류를 최소화 한다.
복잡한 모델을 중요한 것 만 추려 추상화 함으로써 시스템 구조를 시각적으로 표현할 수 있다.
완전한 시스템이 구축되지 않더라도 개략적으로 모델을 만들어 테스트 하고 살을 붙여나갈 수 있다.
재정의 할 필요가 없어 코드 작성이 간결해진다.
상속으로 인한 최소한의 규칙을 통해 프로젝트의 확장 시 오류를 최소화 한다.
자식클래스에서 새로운 함수를 추가하거나 부모 클래스의 함수를 재정의(Overriding)해 사용할 수 있다.
클래스의 재사용이 쉽다.
-하나의 클래스에서 같은 이름의 함수를 여러 개 가질 수 있다(Overloading). 호출하는 객체가 어떤 인풋 파라미터를 사용해 호출하냐에 따라 각자 다른 함수가 호출되게 한다. 즉, 비슷한 기능을 하는 다른 함수를 만들 때 불필요하게 너무 많은 함수명을 만들어 내 가독성이 떨어지는 문제를 해결할 수 있다.
여기까지가 OOP의 간단한 설명과 특징을 나열했다.
운영체제와는 독립적으로 실행할 수 있다
불필요한 기능을 과감히 제거하여 다른 언어에 비해 배우기가 쉽다.
자동 메모리 관리 등을 지원하여 다른 언어에 비해 안정성이 높다
연산자 오버로딩을 금지하고 제네릭을 도입함으로써 코드의 가독성을 높였다.
관한 수많은 참고 자료를 찾을 수 있다.(사용자가 많음으로 그만큼 자료또한 풍부함.)
실행을 위해 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 실행 속도가 느리다. (JVM: Java Virtual Machine)
예외 처리가 잘 되어 있지만, 개발자가 일일이 처리를 지정해 줘야 한다는 불편함이 있다.
다른 언어에 비해 작성해야 하는 코드의 길이가 긴 편이다.
객체 지향 프로그래밍 = OOP
객체를 생성하고, 이를 블록처럼 조립해서 하나의 프로그램으로 만드는 것
학교 가는 과정에 대한 절차적 프로그래밍.
1 일어난다 2 씻는다 3 밥을 먹는다 4 버스를 탄다 5 요금을 지불한다
6 학교에 도착한다
<시간에 흐름에 따른 프로그래밍>
학교 가는 과정에 대한 객체 지향 프로그래밍.
1 객체를 정의한다
2 객체의 기능을 구현한다
3 객체 사이의 협력을 구현한다
1 실행이 빠르다
2 구조가 깔끔하고 명확하다.
3 코드를 DRY(Don't Repeat Yourself) 상태를 유지 할 수 있도록 해준다.
[ " Class가 없다면 계속 작업이 반복돼 흑흑 " ]
프로그램에서 사용되는 자료를 저장하기 위한 공간 할당받은 메모리의 주소 대신 부르는 이름.
프로그램 실행 중에 값 변경 가능 사용되기 이전에 선언되어야 한다
항상 같은 수를 의미한다
입력변수의 값과 일치하는 case 입력값(입력값1, 입력값2, ...)이 있다면 해당 case문 하위의 문장이 실행
breakà해당 case문을 실행 한 뒤 switch문을 빠져나가기 위함 defaultà만약 break 문이 빠져 있다면 그 다음의 case 문이 실행됨