Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

분류 전체보기259

5. 접근 제어자와 캡슐화 For Safe Programming ! 객체 지향 프로그래밍에서 관련된 데이터와 기능, 즉 필드(데이터)와 메서드는 클래스로 묶어서 관리하기로 했다. 하지만 이것만으로는 부족하다. 기껏 클래스에 잘 담아뒀는데 누가 마음대로 꺼내서 건드리면 말짱 도루묵이기 때문이다. 이를 위해서 존재하는 것이 바로 접근 제어자(access modifier)이다. 접근 제어자는 말 그대로 접근의 수준을 제어할 수 있도록 하는 것이다. '필요한 부분만 공개하겠다 !' 캡슐화(Encapsulation) 객체지향의 4가지 특징 중 하나인 캡슐화는 말 그대로 캡슐(클래스) 안에 데이터와 로직을 담는 것을 말한다. 즉 데이터(필드)와, 데이터 조작 메서드를 묶어서 관리하고 접근 제어자를 통해 외부의 무분별한 접근을 제한하는 것이다.. 2024. 3. 3.
4. 생성자 Construct Swift를 공부하면서도 만났던 생성자. Java에서도 거의 유사했다. 다만 Swift에서는 Initializer였다면 Java에서는 Construct로 부른다는 것? 생성자는 말 그대로 객체를 생성하는데 도움을 주는 메서드이다. 정확히는 객체를 생성한 직후에 값 초기화를 할 수 있도록 하는 특별한 메서드이다. public class Student { String name; int age; int grade; } 위와 같은 클래스가 있다. Student student1 = new Student(); //멤버 변수 초기값 설정 student1.name = "user1"; student1.age = 20; student1.grade = 90; java는 객체를 생성해주고 초기화를 하지 않으면, 멤버의 타입에.. 2024. 3. 2.
C 미니 프로젝트 회고 C언어 기초 학습을 마치며, 후반부에 팀원들과 함께 프로젝트를 진행했다. 워낙 짧은 기간의 프로젝트였지만 나름대로 성장의 요소가 있었다고 생각하고 추후 프로젝트를 진행할 때 더 잘할 수 있도록 회고를 간단하게 진행하려고 한다. 어떤 프로젝트? 프로젝트의 목표는 c언어를 활용해서 간단한 프로그램을 만드는 것이었다. (순수 C, Visual Studio) 주제는 자유였고, 우리 팀은 'DB를 활용해 특정 장소 주변의 맛집을 추천해 주는 프로그램'을 만들었다. 우리는 항상 점심 메뉴 고민에 시달리는 사람들이니까..! 프로젝트 기간은 주말을 제외하면 약 4~5일 정도로 굉장히 짧은 기간이었다. 실제로 빡세게 작업한 건 대략 3일 정도인 듯.. 마음가짐 아무래도 새로운 사람들, 새로운 언어, 새로운 개발 환경에서.. 2024. 3. 2.
3. 절차 지향 vs 객체 지향(OOP) 절차 지향 프로그래밍 말 그대로 '절차'를 지향하는 프로그래밍 방식이다. 즉 '실행 순서'가 중요하다. 어떤 값을 얻기 위해서 '어떻게' 코드를 실행해야 하는가? 처리할 데이터와 처리 방법이 분리되어 있다. 객체 지향 프로그래밍 세상의 대부분의 것들은 특정한 역할이나 책임이 있는 객체로 표현될 수 있다. 객체 지향 프로그래밍에서는 이런 기능은 네가 하고 저런 기능은 내가 하고 와 같이 객체들 사이에서 상호작용(메세징)이 일어난다. 객체 지향에서는 '관련도'가 높은 데이터와 해당 데이터를 처리하는 메서드를 함께 묶어서 관리하게 된다. 아래 예시 코드를 통해서 절차 지향적인 프로그램을 객체 지향적 프로그램으로 변경해 보자. 스마트 전등을 크고 끼는 시나리오를 생각해 보자. 기존 예시 코드들과 같이 메인 메서.. 2024. 2. 23.
C - 문자열, 다차원 배열(2차원, 문자열 배열) C에서는 String 타입이 없다. (C++에는 표준 라이브러리로 존재한다.) 그렇기 때문에 '문자' '배열'을 통해서 문자열을 구현한다. (말그대로 문자열이다 ㅋㅋ) NULL 종료 문자열 문자(char)는 1개지만, 문자열은 문자가 여러개이기 때문에 어디까지인지 알기 위해 종료 문자열 개념을 사용한다. 문자열의 끝에는 항상 널 문자 '\0' 가 들어간다. (아스키 코드상 0) _ 빈 공간은 0으로 초기화 된다는 말. 이는 널 문자의 자리를 꼭 마련해 줘야 한다는 뜻과 동일하다. 종료 지점을 알려주지 않으면 메모리 주소 침범이 일어날 수 있기 때문이다. 'a'는 char타입으로 1바이트 이지만, "a"는 1바이트 + 종료문자열 1바이트로 문자열 2바이트이다. 문자열 입력 함수 표준 입력장치인 키보드로부터.. 2024. 2. 18.
C - Array 1차원 배열 우리는 프로그램에서 다양한 종류의 수많은 데이터를 관리해야 한다. 가장 처음 나온 개념은 '변수'였다. 하지만 데이터가 많아지면서 하나하나 변수를 선언하는 것이 너무 비효율적이었다. 따라서 '같은 타입의 데이터'를 연속적으로 묶어서 관리하면 더 효율적이겠다! 해서 나온 개념이 바로 배열이다. 추가적으로 이제 다양한 타입의 관련된 데이터를 묶어서 관리하기 위해 '구조체'도 등장하고, 함수까지 같이 묶어서 관리하기 위해 '클래스'도 등장한다.(클래스는 C++에서 사용 가능하다. C에서는 구조체만 존재함) 클래스를 통해 객체지향 프로그래밍의 구현이 이루어졌다. (C는 절차, 함수형 프로그래밍 언어이다.) 배열 Array 배열은 하나의 이름으로 참조되는 같은 타입의 연속적인 메모리 공간을 의미한다. 하나의 이름.. 2024. 2. 18.