CS/객체지향프로그래밍 9

[객체지향프로그래밍] #9 람다식

• 수학의 람다식 x, y의 값을 계산하는 수학 함수 f를 람다식으로 변환해보자.f(x, y) = x + y // x, y의 합을 구하는 수학의 함수 함수의 이름을 제거하고 간소하게 표현된다.(x, y) -> x + y 수학에서 람다식은 이름 없는 함수를 뜻한다.아래와 같이 괄호와 함께 x와 y에 대입될 값을 지정하면 계산이 이루어진다.((x, y) -> x + y)(2, 3)= 2 + 3= 5 • 자바의 람다식 자바에서는 함수를 메소드라고 부른다. • 람다식 구조 매개변수 리스트함수에 전달되는 매개변수를 나열한다생략 시, 컴파일러가 추론하여 알아서 처리한다.매개변수가 1개인 경우, 괄호를 생략할 수 있다. 애로우 토큰 ( -> )매개변수 리스트와 함수 코드를 분리시키는 역할이다.매개변수들을 전달하여 함..

[객체지향프로그래밍] #8 Nested Classes

• Nested Classes 다른 클래스 내에 정의된 클래스이다.외부 클래스의 멤버로 간주하며 멤버 변수 및 메서드에 접근할 수 있다.코드의 구조를 조직화하고 캡슐화하는데 유용하다. • Nested 클래스 4가지 1. Static Nested 클래스 (정적 중첩 클래스)외부 클래스의 정적 멤버로 선언되는 클래스이다외부 클래스의 인스턴스에 종속되지 않고 정적 멤버에만 접근한다. 2. Inner 클래스 (인스턴스 중첩 클래스)외부 클래스의 멤버 변수로 선언되는 클래스이다.외부 클래스의 인스턴스에 종속되며 모든 멤버에 접근할 수 있다.외부 클래스의 인스턴스를 통해 생성된다.class OuterClass { // 외부 클래스 class InnerClass { // 인스턴스 중첩 클래스 int..

[객체지향프로그래밍] #7 제네릭과 컬렉션

> Vector는 배열을 가변 크기로 다룰 수 있게 하고, 객체의 삽입, 삭제, 이동이 쉽도록 구성한 컬렉션 클래스이다.벡터에 삽입되는 요소의 개수에 따라 자동으로 크기를 조절한다.요소의 삽입과 삭제에 따라 자동으로 요소들의 자리를 이동한다. • 벡터 생성벡터를 생성할때 Vector의 E에 요소로 사용할 타입을 지정해야 한다.(int, char, double 등 기본 타입은 Wrapper 객체로 만들어야 저장해야 한다.)Vector v = new Vector(); • 주요 메소드 > HashMap은 key와 value의 쌍으로 구성되는 요소를 다루는 컬렉션이다.K는 키로 사용할 요소의 타입, V는 값으로 사용할 요소의 타입을 지정한다.HashMap h = new HashMap • 주요 메소드

[객체지향프로그래밍] #6 모듈과 패키지

프로그램을 작성하다 보면 두 객체가 같은지 비교해야 하는 상황이 있다. • == 연산자== 연산자는 두 레퍼런스가 동일한 객체를 가리키는지 비교한다.Point a = new Point(2,3);Point b = new Point(2,3);Point c = a;if(a == b) // false System.out.println("a==b"):if(a == c) // true System.out.println("a==c"): 실행결과 : a==c 위의 코드가 실행되면 2개의 Point 객체가 생성되고, 레퍼런스 a와 b는 이들을 각각 가리킨다. • boolean equals(Object obj)equals는 인자로 건네진 객체 obj와 자기 자신을 비교하여 두 객체의 내용이 같은지를 비교하는 메..

[객체지향프로그래밍] #5 상속

부모 클래스에 만들어진 필드와 메소드를 자식 클래스가 물려받는 것이다.동일한 특성을 재정의할 필요가 없어 자식 클래스가 간결해진다. 자바에서는 부모 클래스를 슈퍼 클래스, 상속받는 자식 클래스를 서브 클래스라고 부른다.  • 서브 클래스/슈퍼 클래스의 생성자 호출 및 실행 new에 의해 서브 클래스의 객체가 생성될 때 슈퍼클래스 생성자와 서브 클래스 생성자가 모두 실행된다. 호출 순서 : 서브 클래스의 생성자가 먼저 호출, 서브 클래스의 생성자는 실행 전 슈퍼 클래스 생성자 호출실행 순서 : 슈퍼 클래스의 생성자가 먼저 실행된 후 서브 클래스의 생성자가 실행된다. 원칙적으로 서브 클래스의 개발자가 서브 클래스의 각 생성자에 대해 함께 실행될 슈퍼 클래스의 생성자를 지정해야 한다.하지만 개발자의 명시적 지..

[객체지향프로그래밍] #4 클래스와 객체

생성자는 객체가 생성될 때 객체의 초기화를 위해 실행되는 메소드이다. • 생성자의 특징생성자의 이름은 클래스 이름과 동일하다.public class Circle { public Circle(int r, String n) { ... } // 생성자}생성자는 여러개 작성(오버로딩)할 수 있다.public class Circle { public Circle() {...} // 매개 변수가 없는 생성자 public Circle(int r, String n) {...} // 2개의 매개 변수를 가진 생성자}생성자는 new를 통해 객체를 생성할 때 한번만 호출된다.Circle pizza = new Circle(10, "자바피자"); // 생성자 Circle(int r, String n)Circle d..

[객체지향프로그래밍] #3 배열

• 배열이란?인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조를 말한다. 배열을 이용하면 한 번에 많은 메모리 공간 할당이 가능하다. • 배열 선언 및 생성자바에서 배열의 생성은 다음 두 단계로 이루어진다.배열에 대한 레퍼런스 변수 선언int intArray []; // int [] intArray;도 가능char charArray []; // char [] charArray;도 가능배열 생성 - 배열의 저장 공간 할당intArray = new int[10]; // int intArray = new int[10];도 가능charArray = new char[20]; // char charArray = new char[20];도 가능 배열의 생성과 선언을 동시에 할 수도 있다.int intArray..

[객체지향프로그래밍] #2 자바 기본 프로그래밍(2)

• System in키보드부터 직접 읽는 자바의 표준 입력 스트림이다.하지만 응용프로그램이 받은 바이트 정보를 문자나 실수로 변환해야 하는 번거로움이 있다.따라서 문자나 정수, 실수, 문자열 등 사용자가 원하는 타입으로 변환해주는 Scanner 클래스를 사용하는 것이 효과적이다.  • Scanner를 이용한 키 입력우선 다음과 같이 Scanner 객체를 생성한다.Scanner scanner = new Scanner(System.in); // Scanner 객체 생성 Scanner를 사용하기 위해서는 프로그램 맨 앞줄에 다음 import 문이 필요하다.import java.until.Scanner; Scanner 클래스는 사용자가 입력하는 키 값을 공백 문자를 기준으로 분리하여 토큰 단위로 읽는다. Sca..

[객체지향프로그래밍] #1 자바 기본 프로그래밍(1)

전공교재인 '명품 Java 프로그래밍'을 바탕으로 정리한 내용입니다. 명품 JAVA Programming (개정4판) | 생능출판사명품 자바를 사랑해주시는 많은 교수님들과 독자들께 감사드립니다. 2017년 7월에 개정3판이 나오고, 두 달도 지나지 않아 Java 9가 출시되었습니다. 그리고 급기야 올해 3월에는 Java 10이 출시되었www.booksr.co.kr public class Hello { public static int sum(int n, int m) { return n + m; } // 메소드 1// main() 메소드에서 실행 시작 public static void main(string[] args) { int i = 20; int s; char a; s = sum(i, 10);..