자바공부하기 34

데이터타입의 두번째 목적

 

- 메모리의 형태를 지정하는 것이다.

: 메모리의 형태란 비트의 조합을 말한다.

: int 정수 형이다.

 

- 다시 마라해 데이터 타입이란 메모리의 크기(size)와 메모리의 형태(type)를 지정하는 것이라 정의할 수 있다.

: int a; //4 바이트 메모리 생성, 정수 형태의 메모리

: char c; //2 바이트 메모리 생성, 정수 형태의 메모리

: float f; //4 바이트 메모리 생성, 실수 형태의 메모리

 

심볼 테이블

- 컴파일러가 프로그램 내에 필요한 변수들을 주소로 매핑하기 위해 만드는 심볼들의 테이블

 

 

 

 

 

자바공부하기 33

데이터타입

 

메모리를 얻는 방법

- int a;

: 4바이트 메모리를 얻는다

: 얻은 메모리의 주소(위치)를 받아낸다

: 메모리 위치를 a라는 이름과 연결시켜 준다

 

데이터 타입은 메모리를 얻기 위한 하나의 수단으로 활용

 

데이터 타입은 (메모리의)크기(size)이다. (VM이 미리 정해놓은)

 

자바의 기본 데이터 타입

- 컴파일러 차원에서 미리 제공되는 데이터 타입을 기본 데이터 타입이라 한다.

 

- byte(1),char(2),short(2),int(4),long(8),float(4),double(8)

: byte: 8비트, 2의 보수(-128~127)

: short: 16비트 (-32768~32767)

: char: 16비트, 유니코드(0~65535)

: int: 32비트(-2147483648 ~ 2147483647)

: long: 64비트 (-9223372036854775808~9223372036854775807)

: float: 32비트

: double: 64비트

: boolean: true, false

 

 

JAVA공부하기 32

데이터타입

 

데이터 타입이란?

: 프로그래머가 메모리를 얻어올 때 그 크기를 지정한다는 의미

 

메모리를 얻고 사용하는 절차

: 필요한 메모리의 크기를 정한다.

: 크기에 해당하는 만큼의 메모리를 얻는다

: 메모리에 데이터를 집어 넣는다.

 

만약 4바이트의 메모리를 프로그래머가 얻어낸다는 것은 어렵기 때문에 메모리의 크기를 미리 지정하는것이 데이터 타입니다.

 

데이터 타입을 이용하면 효과적인 메모리 활용이 가능하다.

 

 

 

 

 

객체지향의 핵심 키워드

 

클래스(Class) : 데이터+메서드

객체(Object), 인스턴스(instanse)

메시지(Message)

캡슐화(Encapsulation)

상속(inheritance)

다형성(polymorphism)

 

클래스 : 메타 데이터 => 데이터의 데이타

다형성 : 서로 다른 객체가 동일한 메세지에 대하여 서로 다른 방법으로 응답할 수 있는 기능

 

 

 

객체지향 (3)_ 자바공부하기

 

객체지향개념의 등장 배경

 

프로그래밍 언어의 발전

- 기계어 -> 어셈블리어 -> 고급언어

 

함수 기반 프로그래밍

- 1970년대 - 1980년대

 

소프트웨어의 위기

- 생산성 향상의 한계

 

객체지향 개념의 등장

- 1980년대

 

객체지향?

 

 

 

객체지향 _ 2 <자바공부하기>

 

데이터 중심 분석과 설계

1980년대

- Peter Chen과 Ed Codd의 접근 방법

* 엔티티라 불리는 일련의 데이터 아이템을 빌딩 블록으로하여 소프트웨어 시스템을 만들고자 함

 

특징

- 데이터가 비즈니스 응용에서 가장 안정된 부분이라 생각하고 데이터 모델링 방법을 사용하여 시스템을 표현하고자 함

ex) E-R 모델

 

- 데이터 모델링 기법은 시스템의 기능을 표현하는데 도움을 주지 못하고 추가적인 방법을 필요로 함

 

객체지향 소프트웨어 방법론

 

어떠한 기존의 방법도 데이터와 함수를 함께 다루지 않는다

 

객체지향 방법론은 높은 응집도와 낮은 결합도를 제공해 주어, 기존의 방법론에서 나타났던 문제점들을 상당부분 해소시켜 줄 수 있는 방법론으로 등장하게 되었다.

 

객체지향방법론

- Object >= Data+Functions

 

 

 

 

스파게티 코딩

1960년대

- 작고 간단한 응용 시스템을 만듦

* 제한된 시스템 자원하에서 최대한의 효과를 보고자 노력함

 

- 개발자들의 창조적인 능력에 의해 소프트웨어가 개발됨

 

- 스파게티 코드 생성

 

- 수많은 GOTO 구문은 소프트웨어 시스템을 보수 / 관리하기 어렵게 함

 

 

 

구조적 설계와 분석

1970년대

- AI Constantine과 Ed Yordon의 접근 방법

* 함수(function)들을 빌딩 블록(building block)으로 하여 소프트 웨어 시스템을 만들고자 함

 

특징

- 모듈화 프로그래밍으로 발정을 가져 옴

- 함수는 언제나 변화할 수 있음

* 거의 변하지 않는 자연 법칙에 따라 작성되는 '과학 프로그램'에는 적합하나, 사용자의 요구가 계속정으로 바뀌는 현실 세계의 응용에는 부적합함

- 함수와 프로시저(procedure)는 생성되는 응용 프로그램에 대해 추상화를 제공함

* 함수는 다른 응용에서 재사용 가능함

* 프로시저는 반복적인 작업을 줄여 줌

- 높은 결합도(coupling)와 낮은 응집도(cohesion)에 의한 시스템의 복잡도 증가

* 결합도

- 특정 코드 부분의 다른 코드나 데이터 저장소에 대한 의존성 정도

- 구조적 방법론은 높은 결합도를 보여 줌

*응집도

- 서로 관련된 일련의 코드와 데이터가 얼마나 적합하게 관련을 맺고 있는가에 대한 정도

- 명령형 언어에서 변수는 공통 영역에 존재하면 모든 함수에서 공유가 가능함

- 구조적 방법론은 낮은 응집도를 보여 줌

 

 

 

 

 

클래스 구조 설명

 

Public 키워드

* 접근제한을 나타낸다.

* public으로 선언하면 클래스 내/외에서 접근하는데 제한이 없다

 

static 키워드

* static은 공유의 의미를 갖음

* 모든 객체에서 공통으로 사용하는 메모리

 

void키워드

* 모든 메서드는 리턴 타입을 선언해야 한다

* void는 리턴 값이 엢음을 나타낸다

 

String[] args

* Main()메서드의 실행 시 매개변수 지정형식

* String[]까지가 데이터 타입

* args[0], args[1]형식으로 매개변수를 입력 받음

- args: Argument String의 약자

- args: Argument Value의 약자

* String args[]

- 사용가능하나 보편적으로 쓰이는 형식은 아님

 

 

System.out.println()

* 모든 클래스는 java.lang.*을 자동으로 import함

- System클래스는 그 안에 포함된 클래스

- System클래스는 io클래스를 import하고 있음

 

* out은 printStream타입의 static변수

- println()메서드는 printStream클래스의 멤버 메서드

* 따라서 객체생성 이전에 static변수 out로 println()메서드 사용이 가능

 

"        " String

* 자바에서 문자열을 이중따옴표로 표시

* println()은 표준출력 메서드로 문자열을 매개변수로 주면 도스 창에 출력

 

+ Recent posts