49 votes

Hélicoptèreview de ABAP

Je ne sais pas une chose à propos de l'ABAP, hormis qu'il a un OO côté, et je voudrais avoir une sorte de helicopterview de lui avant que je commence à regarder dans le détail. Je sais que je peux trouver tout cela lors de l'étude , mais comme je l'ai dit pour commencer, je voudrais savoir ce que je fais.

  • Est-elle (toujours) compilé?
  • Typestem : Est-il fortement typé? Faut-il utiliser l'inférence de type?
  • Héritage : unique / multiples, à l'interface des structures de type ?
  • Collections : Est-il des collections en dehors de tableaux ? A générique collections? Faut-il utiliser compréhension de Liste ?
  • Comment parler de (con/contre/en)de la variance dans les tableaux, returntypes, parametertypes, impérieuses?
  • Tout Exceptionhandling?
  • Tout construire dans la conception par contrat de support?
  • Une chose remarquable que oposed à d'autres langues?
  • ...

Toutes les informations générales à propos des caractéristiques fondamentalement serait la bienvenue!

79voto

vwegert Points 8935

Est-elle (toujours) compilé?

ABAP est "compilé" en une sorte de byte-code (appelé "charge" pour des raisons historiques), qui est alors exécuté par une machine virtuelle à l'intérieur du noyau. Vous pouvez comparer cela avec Java, avec une grande différence: La charge n'est pas indépendant de l'ordinateur, mais optimisé pour la cible type de machine. Cela signifie que dans un système de paysage avec plusieurs différents types de serveurs d'applications, vous pouvez avoir plusieurs pré-compilé des charges pour un seul programme. Non pas que vous allez jamais voir de tout cela - l'ensemble du processus de compilation est géré automatiquement.

Typestem : Est-il fortement typé? Faut-il utiliser l'inférence de type?

Fortement typé avec un système de types génériques sur le dessus. Noter qu'il y a un ensemble complet de données dictionnaire est intégré dans la langue - très pratique.

Héritage : unique / multiples, à l'interface des structures de type ?

L'héritage simple. Les Interfaces sont pris en charge, y compris composite interfaces et la mise en œuvre de la composante de renommage (deux interfaces IF_FOO et IF_BAR peut à la fois définir une méthode BAZ, et une classe implémentant les interfaces aura ensuite deux méthodes IF_FOO~BAZ et IF_BAR~BAZ).

Collections : Est-il des collections en dehors de tableaux? A générique collections? Faut-il utiliser compréhension de Liste?

Ce que vous savez en tant que "matrice" dans d'autres langages de programmation n'existe pas vraiment en ABAP - vous aurez généralement utiliser les tables internes" à la place. Pense de type base de données structurée en mémoire les tables. Il y a quelques idées de collecte de classes réparties à travers les différents modules, mais la manière canonique pour ce faire est d'utiliser les tables internes - définir un type de table de lignes qui représentent des références à des instances ou à des structures qui contiennent une telle référence.

Comment parler de (con/contre/en)de la variance dans les tableaux, returntypes, parametertypes, impérieuses?

Tableaux: voir ci-dessus. Majeur: Vous ne pouvez pas changer la signature de la méthode lors de la mise en œuvre de la méthode de l'interface ou de la transgression de méthodes de la superclasse. Comme pour les paramètres - cela dépend si vous transférez des données (ou données de références) ou des références d'objet. En général, upcasting peut arriver implicitement lorsque vous devez effectuer les passer explicitement.

Tout Exceptionhandling?

Oui. Plus d'un moyen - pour des raisons historiques (compatibilité descendante). La classe de base des exceptions sont pris en charge.

Tout construire dans la conception par contrat de support?

Aucun que je suis au courant.

Une chose remarquable que oposed à d'autres langues?

Beaucoup de choses. Vous voudrez peut-être consulter http://www.volker-wegert.de/en/node/17 et http://www.volker-wegert.de/en/node/21 pour un certes biaisée vue d'ensemble :-)

24voto

Noah Points 589

Je vais essayer de fournir certaines choses de la réponse précédente n'a pas, tout en ignorant ce qu'ils ont fait mention:

Est-elle (toujours) compilé?
Eh bien, l'interface pour le programmeur dit "Activer", compile pas, mais c'est parce qu'il est intégré dans la gestion de version. Lorsque vous Activer quelque chose, il le compile, et rend la source et binaire versions "active" de la version. Si quelqu'un tente d'exécuter source qui n'est pas compilé, il sera automatiquement compilé comme ils l'exécutent.

Typestem : Est-il fortement typé?
En gros, oui. ABAP est comme un étrange croisement entre Pascal et COBOL. Il y a des "le Terrain des Symboles", qui sont comme des pointeurs. Il existe aussi maintenant des types génériques. (Et générique champ des pointeurs). L'une des choses les plus cool c'est qu'il n'y a pas de différence entre ABAP types et les types de Base de données. N'importe quelle table vous feront devenir une structure de type automatiquement. C'est-à-dire, ABAP est intégrée avec la base de données de façon presque pas d'autres langues. Vous pouvez également écrire de SQL, qui est en fait partie de la ABAP, au lieu d'être simplement une chaîne de caractères, comme dans d'autres langues.

Héritage : unique / multiples, à l'interface des structures de type ?
Il y a l'interface des structures, je n'ai pas l'habitude de les utiliser. Si vous avez fait beaucoup de ré-utilisable classes, ils seraient une bonne idée, cependant.

Collections : Est-il des collections en dehors de tableaux ? A générique collections? Faut-il utiliser compréhension de Liste ?
Mieux, il a "tables Internes", qui sont fondamentalement un type de tableau dynamique. Elles peuvent être déclarées à partir de presque n'importe quel type, y compris ceux dans le dictionnaire de données. Ils peuvent être bouclés, triés, etc. Il existe plusieurs types, y compris haché et le tri des variantes.

Toute la gestion des exceptions?
À la fois de la programmation orientée objet et non de la programmation orientée objet types.

Une chose remarquable que oposed à d'autres langues?
Comme les autres l'affiche dit, beaucoup. Il est très bon à quelque chose à voir avec les opérations de base de données, et de ré-utiliser des structures complexes et des types de données. Il est naturellement de la croix-base de données et de la croix-plate-forme (système d'exploitation et processeur). Il a une très bonne gestion de version et le système de transport. L'ensemble du système SAP a une très bonne support multi-langue. Vous pouvez obtenir des écrans simples avec des titres appropriés et boîtes de sélection automatiquement, ce qui signifie que vous pouvez faire moins de programmation et plus de travail. Vous n'avez pas de carte entre les bases de données les types et les types de langues, etc.
Choses c'est moins bien:
1. Les numéros sont généralement stockés sous forme ASCII, ce qui rend moins rapide en maths dans de nombreuses applications.
2. La plupart des structures de données sont très normalisé, qui signifie que vos données peuvent être réparties sur 50 tables parfois. "Star" des requêtes sont très fréquents. Des fonctions intégrées pour récupérer des données (f.e. Logique des Bases de données) sont à votre ami dans ces cas.
3. SAP essayé d'être tout pour tout le monde, donc il ya beaucoup d'options de configuration, etc., et parfois, une fonction ne fait pas ce que vous pensiez basée sur le comportement passé.
4. ABAP est parfois très détaillé. Essayez d'utiliser le "modèle" sur quelque chose de simple comme GUI_DOWNLOAD.
5.SAP est très ambitieux avec ce qu'ils ont pris sur, et donc couru dans les limites de matériels, systèmes d'exploitation, et RDBM systèmes tôt. Ainsi, ils ont hérité kludges de traiter avec elle qui ne sont pas assez. (Tables de billard, tables de Cluster, etc.)
6. Lorsque vous activez un programme, il ne veut pas faire de vérification de la compatibilité avec la fonction des modules utilisés. Il y a des situations où quelque chose va activer sans problème, mais ensuite crash au moment de l'exécution, même dans les cas où il pourrait avoir été pris au moment de la compilation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X