프로그래밍 언어 활용

송원철·2023년 7월 19일

Java 프로그래밍 기초

  • Java: 1995년 자바의 아버지라 불리는 제임스 고슬링과 그의 동료들이 함께 만든 프로그래밍 언어

▶ 디지털 장치를 제어하기 위한 만들어진 언어 .

▶ 웹이 등장하면서 자바가 웹을 통해 엄청난 성공을 거두며 주류 언어로 자리 잡음.

▶ 현재 국내에서는 정부 및 기업의 시스템 통합 프로젝트가 대부분 자바를 기반.

- Java 명명 권장규칙

  1. 클래스 이름의 첫 글자는 항상 대문자로 한다.

  2. 여러 단어인 이름은 단어의 첫 글자를 대문자로 한다.

  3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분.

- Java의 특징

  1. 객체지향적

    ▶ 수많은 연구를 통하여 그 가치가 입증된 프로그램 설계 방법론

    ▶ 프로그램 상의 데이터에 초점을 맞춘 것

  2. 운영체제 독립적

  3. 배우기 쉽고 사용하기 쉬움

  4. 자동 메모리 관리(Garbage Collection)

01. 변수와 자료형

  • 데이터(Data)

: 데이터란 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값

  • 정보(Information)

: 데이터를 기반으로 하여 의미를 부여한 것

- 변수의 명명규칙(필수사항)

  1. 대소문자가 구분되며 길이 제한이 없다.

  2. 예약어를 사용하면 안 된다.

  3. 숫자로 시작하면 안 된다.

  4. 특수문자는 '_'와 '$'만을 허용한다.

  • 변수의 명명규칙(권장사항)
  1. 클래스 이름의 첫글자는 항상 대문자

  2. 여러 단어 이름은 단어의 첫 글자를 대문자

  3. 상수의 이름은 대문자, 단어는 _로 구분

- 비트(bit)

: 컴퓨터가 나타내는 데이터의 저장 최소단위로서 2진수 값 하나를 저장할 수 있는 메모리공간을 의미

  • 바이트(byte)

: 데이터 처리 또는 문자의 최소 단위로서 8개의 비트가 모여 하나의 바이트가 구성됨

- 변수의 자료형

1) 기본형(Primitive type): 실제 데이터(값)을 저장

2) 참조형(Reference type): 데이터가 저장되어 있는 주소를 저장

변수의 자료형

  • 변수의 메모리구조

변수의 메모리 구조

  • 상수: 수학에서 변하지 않는 값을 의미하고, 컴퓨터에서는 한번만 저장할 수 있는 공간으로 초기화 이후 다른 데이터(값)을 대입할 수 없다.

  • 리터럴: 변수에 대입되는 값 자체

- 컴퓨터의 동작원칙

  1. 반드시 같은 데이터타입 간에 연산을 한다.

  2. 반드시 동일한 데이터타입의 값을 동일한 데이터타입의 변수에 대입한다.

  3. 결과값 또한 동일한 데이터타입의 값을 가진다.

  • 강제 형변환을 할 때 데이터의 손실이 발생할 수 있다.

  1. 연산자
  • a >> 숫자: 비트를 오른쪽으로 숫자만큼 이동하고 새로 생긴 비트는 0. 2로 나누는 효과

  • a << 숫자: 비트를 왼쪽으로 숫자만큼 이동하고 새로 생긴 비트는 0. 2로 곱한 효과

  1. 제어문

생략

04. 배열

  • 배열: 동일한 자료형의 여러 변수를 묶음.

    ▶ 데이터에 순차 접근이 가능함.

    ▶ 많은 수의 변수를 하나의 문장으로 선언 가능

  • 얕은 복사: 객체의 주소값만 가져와 참조형변수에 저장하고 하나의 객체를 두 변수가 참조하고 있는 것

  • 깊은 복사: 다른 객체를 생성하여 새로운 객체에 데이터 내용을 복사하는 것

05. 메소드

  • 메소드: 수학의 함수와 비슷하며 호출을 통해 사용한다. 호출시 전달값은 있거나 없을 수 있다. 함수가 호출되면, 내부에 작성된 연산을 수행하게 되며, 연산 후 결과값/반환값은 있거나 없을 수 있다.

  • 메소드의 예약어

    1) static: static 영역에 할당하여 객체 생성 없이 사용함

    2) final: 종단의 의미, 상속시 오버라이딩 불가능

    3) abstract: 미완성된, 상속하여 오버라이딩으로 완성시켜 사용해야 함

    4) syncronized: 동기화 처리, 공유 자원에 한 개의 스레드만 접근 가능함

    5) static final: static과 final의 의미를 둘 다 가짐

06. 객체

  • 객체지향 프로그래밍: 현실세계의 객체를 클래스와 객체의 개념으로 컴퓨터에서 구현한 것

    ▶ 코드의 재사용성이 높다.

    ▶ 코드의 관리가 쉽다.

- 객체지향 프로그래밍의 3대 특징

1) 상속

2) 캡슐화

3) 다형성

  • 추상화

: 중요한 것은 남기고 불필요한 것은 제거하는 일

07. 상속

  • 상속: 다른 클래스가 가지고 있는 멤버들을 새로 작성할 클래스에서 직접 만들지 않고, 상속을 받음으로써 새 클래스가 자신의 멤버처럼 사용할 수 있는 기능

    ▶ 클래스의 재사용, 연관된 일련의 클래스들에 대해 공통적인 규약 정의

  • 상속의 장점

  1. 보다 적은 양의 코드로 새로운 클래스 작성 가능

  2. 코드를 공통적으로 관리하기 때문에 코드의 추가 및 변경 용이

  3. 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 크게 기여함

  • 오버라이딩(overriding)

: 자식 클래스가 상속받은 부모 클래스를 재작성하는 것

  • 오버로딩(overloading)

: 한 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것

08. 다형성

  • 다형성: '여러 개의 형태를 갖는다'는 의미

    ▶ 상속을 이용한 기술로, 자식 객체를 부모클래스타입의 변수로 다룰 수 있는 기술

  • up casting

: 상속관계에 있는 부모, 자식 클래스 간에 부모타입의 참조형 변수가 모든 자식 타입의 객체의 주소를 받을 수 있다.

  • down casting

: 자식 객체의 주소를 받은 부모 참조형 변수를 가지고 자식의 멤버를 참조해야 할 경우, 후손 클래스 타입으로 참조형 변수를 형 변환해야 한다.

  • instanceof 연산자

: 현재 참조형 변수가 어떤 클래스 형의 객체 주소를 참조하고 있는지 확인할 때 사용, 클래스 타입이 맞으면 true, 아니면 false 반환

  • 바인딩

: 실제 실행할 메소드 코드와 호출하는 코드를 연결시키는 것

  • 동적 바인딩

: 컴파일시 정적바인딩된 메소드를 실행할 당시의 객체 타입을 기준으로 바인딩 되는 것

- 추상클래스: 몸체 없는 메소드를 포함한 메소드

▶ 자체적으로 객체 생성은 불가능하나, 참조형 변수 type으로는 사용 가능

▶ abstract 메소드가 없어도 abstract 클래스 선언 가능

- 인터페이스: 상수형 필드와 추상 메소드만을 작성할 수 있는 클래스

▶ 모든 인터페이스의 메소드는 묵시적으로 public abstract

▶ 변수는 묵시적으로 public static final

▶ 객체 생성은 안되나, 참조형 변수로서는 가능

  • 추상클래스/인터페이스
구분
            인터페이스 				추상클래스

상속			다중상속			    	단일상속
									
구현			implements 사용			extends 사용 

추상메소드	모든 메소드 abstract		abstract 메소드 0개이상

abstract	묵시적으로 abstract		명시적 사용
profile
초보자

0개의 댓글