JAVA

[Java] Comment(주석), 클래스(class), 생성자, 정보은닉

SangRok Jung 2022. 5. 31. 11:54
반응형

 

 

 

 

Comment(주석)


제작한 주석을 그대로 코딩한다. O

소스 코드를 주석한다. X

= 주석 밑으로 코딩하라.

= 코드 밑에 주석을 달지 마라.

 

 

▶ Refactoring : 결과의 변경 없이 코드의 구조를 재조정하는 활동.

ex) 배열 sc를 for문의 length로 넣는것.

 

 

 

 

 

 

 

 

 

Class


▶ 자료와 자료를 처리하는 기능이 모여있는 객체를 기반으로 하는 사용자 정의형 데이터 타입.

객체지향 프로그래밍은 구조적 프로그래밍에서 데이터와 기능을 합침으로서 class가 발전된 형태이다.

data + 기능 = object

object를 Language 차원에서 데이터 타입으로 구현한것이 class다.

SP -> OOP

※ 객체지향프로그래밍의 오브젝트와 자바에서 말하는 오브젝트는 다른 것이다.

 

 

 

 

 

구조적 프로그래밍의 장점과 단점

· 장점 : 추가와 변경이 간단하여 데이터의 변경이 용이하다.

· 단점 : 기능재활용성과 데이터 재활용성이 낮아 재활용성이 낮다 (개발자의 관점)

구조적 프로그래밍은 코드가 들어가면 불안해지기 때문에 품질 유지비용이 높다. (테스터의 관점)

보안성이 낮아 보안 문제가 생긴다. (관리자의 관점)

언어의 발전

c : 구조적 프로그래밍

c++ : 구조적+객체지향적 프로그래밍

c# : 객체지향적 프로그래밍

java : 객체지향적 프로그래밍

★ 추상화 → 캡슐화 → 정보은닉 → 다용성상속성

* software crisis(소프트웨어 위기) : 급격한 컴퓨터 계산 용량과 문제의 복잡성이 급격히 증가함에 따라 발생한 충격.

※ SOLID 의 5대 원리 = 좋은 프로그래밍 언어

클래스의 기본 구조

· class = Attribute + Method

Attribute : Data, Field, Member variable (c++)

Method : Funtion or Member function (c++)

클래스의 인스턴스화

· 클래스의 인스턴스화

※ JAVA는 Run-Time 방식만 지원, C++ 은 Runtime, Complie Time 모두 지원한다.

 

은행계좌는 소유자 계좌번호 잔액 세가지의 정보를 가지고 있어야 하며 입금기능 출금기능 조회 기능이 있다.

 

 

 

 

 

 

 

 

 

 

 

constructor (생성자)


▶ 생성자란 클래스를 메모리에 적재 할 때 이를 초기화 하기 위한 특별한 메소드다.

· 생성자는 클래스와 이름이 같다.

· 리턴형이 없다.

· 명시적으로 작서을 하지 않을 경우 자바 컴파일러가 기본 생성자를 추가한다.

· 오버로딩(Overloading)하여 사용한다.

· 오버로딩된 생성자만 있는 경우 기본생성자를 넣지 않는다. (기본생성자를 반드시 작성해야한다.)

· default 생성자는 꼭 생성해야한다.

 

 

 

 

 

 

 

 

 

information hiding (정보 은닉)


▶ 정보은닉이란 클래스의 요소를 숨기거나 공개하는 기법이다.

 

정보은닉의 필요성

· 보안성 : 노출시키면 안되는 요소의 보호.

· 사용성 : 핵심기능을 제외한 다른 기능을 많이 오픈해 놓을 수 록 불필요한 품질이 공급되어 사용성이 떨어지기 때문에 불필요한 기능은 가급적 감추어야한다.

· 일관성 : 정해진 방식으로만 데이터를 접근한다.

· 확장성 : 클래스의 확장시 정보은닉을 기반으로 확장한다.

 

지시자 개념 동일 패키지 외부
private 비공개 X X
public 공개 O O
protected 상속시 공개 O X
(default) 동일 패키지 공개, 생략으로 표현 O X

 

 

* 객체지향의 특성 : 추상화, 캡슐화, 정보은닉, 상속성, 다형성

반응형

'JAVA' 카테고리의 다른 글

[Java] Overloading, String, StringBuilder  (0) 2022.06.02
[Java] Stack 구현  (0) 2022.05.31
[Java] 리터럴(Literal), 연산자  (0) 2022.05.30
[Java] list, list container, linked list  (0) 2022.05.23
[Java] 패키지, 버블소트  (0) 2022.05.23